[프로그래머스] Lv1. 3진법 뒤집기

CHAEN·2022년 3월 11일
0

problem solving

목록 보기
3/33
post-thumbnail

문제

접근 방법

  • 입력된 10진법 수를 3으로 나누어 3진법으로 변환
  • 이를 뒤집어 리스트의 n번째 원소와 3의 n 제곱을 곱하여 정답 도출

이전에 C++로 풀었던 내용

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

using namespace std;

int solution(int n) {
    int answer = 0;
    int j = 1;
    vector<int> ternary;
    
    while(n){
        ternary.push_back(n%3);
        n /= 3;
    }
    
    for(int i = ternary.size() - 1; i >= 0; i--){
        answer += (j * ternary[i]);
        j *= 3;
    }
    
    return answer;
}

나의 풀이

def solution(n):
    answer = 0
    
    ternary = []
    
    while n:
        ternary.append(n % 3)
        n //= 3
        
    ternary.reverse()
    
    for i, v in enumerate(ternary):
        answer += (3 ** i) * v
    
    return answer

생각 자체는 몇 달 전 C++로 풀었을 때와 같다.
파이썬에서 나누기 할 때 // 이렇게 해야하는걸 계속 까먹고 / 하나만 썼다가 틀린다.. 까먹지 말자!!!
스스로 뿌듯한 점 : enumerate를 썼다٩(๑>ꇴ< ๑)و

다른 사람의 풀이

def solution(n):
    tmp = ''
    while n:
        tmp += str(n % 3)
        n = n // 3

    answer = int(tmp, 3)
    return answer

와.. 이건 뭐지...?

int 함수는 정수로 변환할 값과 밑을 입력해줄 수 있다.
int(value, base)

  • value는 str 가능
  • value는 0, base는 10이 기본값
  • base는 2~36 가능
profile
공부중입니다

0개의 댓글

관련 채용 정보