코딩하는 해달이

[level 1] 3진법 뒤집기 본문

개인 공부/프로그래머스

[level 1] 3진법 뒤집기

코딩하는 해달 2022. 7. 31. 16:11

문제 설명

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

제한 조건

  • n은 1 이상 100,000,000 이하인 자연수입니다.

문제 이해

문제 그대로 3진법으로 변환 후 앞뒤로 반전한 다음 10진법으로 변환해서 리턴해야한다.

 

알고리즘

1. 정수 n을 입력받는다.

2. n을 3진법으로 변환한다.

3. 3진법으로 변환한 n을 문자열로 변환한다.

4. 문자열을 뒤집는다.

5. 문자열을 다시 3진수로 변환한다.

6. 3진법으로 나타난 수를 10진법으로 변환한다.

 

풀이코드

#include <string>
#include <vector>
#include <iostream>
#include <cmath>

using namespace std;

int solution(int n) {
	int answer = 0;
	int decimal_n = n;
	string rv_ternary_n = "";
	string num;


	for (; decimal_n > 0;)
	{
		rv_ternary_n += to_string(decimal_n % 3);	//3진법 string 반전으로 저장
		decimal_n = decimal_n / 3;
	}

	for (int i = 0;  rv_ternary_n.length() > 0; i++)
	{
		num = rv_ternary_n.back(); //3진법 1의 자리 부터 반환
		rv_ternary_n.pop_back(); //3진법 1의 자리 부터 pop
		answer += stoi(num) * pow(3, i); //1의자리 * 3^자릿수
	}				//stoi(num) num이 문자로 추출되었기 때문에 stoi로 정수형으로 변환
	return answer;
}

https://school.programmers.co.kr/learn/courses/30/lessons/68935

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

반응형

'개인 공부 > 프로그래머스' 카테고리의 다른 글

[level 1] 실패율  (0) 2022.08.02
[level 1] 약수의 개수와 덧셈  (0) 2022.07.31
[level 1] 예산  (0) 2022.07.30
[level 1] 두 개 뽑아서 더하기  (0) 2022.07.30
[level 1] 나머지가 1이 되는 수 찾기  (0) 2022.07.29
Comments