• 프로그래머스 : 3진법 뒤집기
    코딩테스트 문제 풀이/프로그래머스 2023. 11. 22. 01:01

    ㅋㅋ 난 정말 힘들게 풀었는데 Integer 클래스 활용을 제대로 하지 못해서 고생한 거였다 🤣 그리고 너무 어렵게 생각했던것도 한몫함..😔

    다른사람 코드 _ 프로그래머스 다른사람풀이 첫번째 두번째 합침

    class Solution {
    public int solution(int n) {
    int answer = 0;
    String third = Integer.toString(n, 3);
    StringBuffer sb = new StringBuffer(third);
    String reversed = sb.reverse().toString();
    answer = Integer.parseInt(reversed, 3);
    return answer;
    }
    }

    헛웃음만 나온다 진짴ㅋㅋㅋㅋ

    위에 코드는 한줄로도 됨..

    class Solution {
    public int solution(int n) {
    return Integer.parseInt(
    new StringBuffer(Integer.toString(n, 3))
    .reverse().toString()
    , 3);
    }
    }

    그리고 계산 하는 방법도 배울 수 있었다. _ 프로그래머스 다른사람 코드 첫번째

    String a = "";
    while(n > 0){
    a = (n % 3) + a;
    n /= 3;
    }

    이렇게 하면 쉽게 3진수로 계산이 되었다. 뒤집힌 3진수를 만들려면

    String a = "";
    while(n > 0){
    a += n % 3;
    n /= 3;
    }

    이렇게 a 문장만 바꿔주면 된다.

    메모 📝

    StringBuffer 클래스 활용 _ 문자열 뒤집기

    new StringBuffer(" str ").reverse().toString();

    Integer 클래스 활용 _ 진수 변환

    n = 10진수 숫자
    // 3진수로 변환
    String str = Integer.toString(n, 3);
    // 3진수 문자열을 10진수로 변환
    int num = Integer.parseInt(str, 3);

    나눗셈으로 진수 변환하기

    String a = "";
    while(n > 0){
    a = (n % 3) + a;
    n /= 3;
    }

    내 코드 😔

    class Solution {
    public int solution(int n) {
    int answer = 0;
    int base = 3;
    String samJinSu = makeReverseSamJinSu(n, 1, base, "");
    answer = Integer.parseInt(samJinSu.substring(samJinSu.length()-1));
    for (int i = samJinSu.length() - 2; i >= 0; i--) {
    answer += Integer.parseInt(samJinSu.charAt(i) + "") * base;
    base *= 3;
    }
    return answer;
    }
    String makeReverseSamJinSu(int num, int x, int base, String result) {
    if (num / x < base) {
    result = num / x + result;
    if (num % x != 0) {
    num = num % x;
    x /= base;
    } else {
    return result;
    }
    } else {
    if (!"".equals(result)) result = 0 + result;
    x *= base;
    }
    return makeReverseSamJinSu(num, x, base, result);
    }
    }

     

    코드 작성 다 하고 정답 떠서 엄청 뿌듯했는데~~ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 두시간 걸림 🥲 심지어 메모도 했는뎅..........

    오늘의 배운점 : 제공되는 클래스를 잘 활용하자! 고민을 조금 더 해보고 문제를 풀자

    처음 풀어본 날 : 23.03.26 ~ 28

Designed by Tistory / Custom by 얼거스