[코딩테스트] 3진법 뒤집기, Math 클래스 | 프로그래머스

Bluewave·2024년 5월 13일

코테공부_java

목록 보기
22/99
post-thumbnail

문제

✏️ 문제 바로가기

문제레벨정답률
3진법 뒤집기Lv.176%

My Code

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        ArrayList<Integer> rest = new ArrayList<>();
        int value = n;
        
        while(value>=3){
            value = n/3;
            rest.add(n%3);
            n /= 3;
        }
        rest.add(value);
        
        int p = 0;
        for(int j = rest.size()-1; j>=0; j--){
            answer += rest.get(j)*Math.pow(3, p++);
        }
        
        return answer;
    }
}
  1. 몫이 3이상일 경우에 while 반복문을 돈다.
  2. 반복문 안에서는 몫을 3으로 계속 나눠주고, 나머지는 rest라는 ArrayList에 저장한다.
  3. 그리고 계산이 끝난 마지막 몫도 ArrayList에 넣어준다.
    => 이러면 자동으로 역순 저장됨
  4. 뒤에서부터 10진수로 다시 되돌린다.

문법 정리

우선 처음에는 숫자를 배열에 저장을 했는데, 배열 크기를 미리 설정하기 어려워 ArrayList로 변경하였다.

  • ArrayList : 배열과 유사하지만 크기를 동적으로 조절 가능한 자료구조
    🤍 요소 추가 : add()
    🤍 요소 반환 : get()
    🤍 요소 크기 반환 : size()

  • 제곱 계산 : Math.pow(a,b);
    조합, 제곱 등등 수학 관련 계산은 주로 Math 클래스를 활용한다. a의 b제곱 계산도 pow() 메서드로 쉽게 할 수 있다.

여기서 말이 나온김에 Math 클래스의 메서드들을 짚고 가보자.

메서드설명
abs(x)절댓값
ceil(x)올림한 정수
floor(x)내림한 정수
max(x,y)큰 값 반환
min(x,y)작은 값 반환
pow(x,y)거듭제곱 계산
sqrt(x)제곱근 계산
exp(x)자연로그 e의 거듭제곱 값 계산
log(x)상용로그 값 계산
sin(x), cos(x), tan(x)삼각함수 계산
asin(x), acos(x), atan(x)역삼각함수 계산

종종 쓰는건 요정도..?
사실 검색하면 다 나오는거지만 코테에선 대부분 인터넷 사용이 불가능하니 외워둡시다요-

profile
Developer's Logbook

0개의 댓글