124나라의 숫자 ( 12899 / 프로그래머스 / JavaScript)

2021. 12. 3. 18:33·Problem Solving/Algorithm Practice

124나라의 숫자 ( 12899 / 프로그래머스 / JavaScript)

문제

풀이과정

숫자가 1, 2, 4 순서로 반복되며 값이 반복되는 형식이다.
값을 3으로 나눴을때 몫과 나머지를 구해서 answer에 나머지를 추가해주는 형식으로 답을 구했다.

다만 3으로 나눳을때 값이 1, 2, 0 순으로 된다
나머지 0일 경우 몫이 1개가 생기므로 새로운 값이 추가되는 현상이 발생하여 주어진 값을 -1 하여
나눳을때 값이 0,1,2 순으로 되게 만들어서 답을 구하였다.

기본 풀이코드

function solution(n) {
    let answer = '';

    function oneTwoFour(n){
        n = n - 1
        let num = parseInt(n / 3); // 몫
        let sub = n % 3; // 나머지

        if(sub == 0){
            answer = '1' + answer;
        }else if(sub == 1){
            answer = '2' + answer;
        }else if(sub == 2){
            answer = '4' + answer;
        }

        if(num > 0){
            oneTwoFour(num);
        }
    }

    oneTwoFour(n);
    return answer;
}

리펙토링

if else 문이 너무 많아 지저분해 보였다. 해당 코드를 리펙토링하여 수정하기 위해 배열을 사용했다.

리펙토링 코드

function solution(n) {
    let answer = '';

    function oneTwoFour(n){
        n = n - 1
        let num = parseInt(n / 3); // 몫
        let sub = n % 3; // 나머지

        answer = ['1','2','4'][sub] + answer;

        if(num > 0){
            oneTwoFour(num);
        }
    }

    oneTwoFour(n);
    return answer;
}

후기

n = n - 1 을 생각하여
처음부터 리펙토링하여 배열로 간단하게 값을 가지고 오는 방법을 빠르게 생각했어야되는데 바로 떠오르지 않았다.
앞으로 잘풀어보자!

반응형

'Problem Solving > Algorithm Practice' 카테고리의 다른 글

[SWEA][D1] 1933. 간단한 N 의 약수 JAVA  (0) 2025.05.27
[SWEA][D1] 2043. 서랍의 비밀번호 Java  (0) 2025.05.27
오픈채팅방 (42888 / 프로그래머스 / JavaScript)  (1) 2021.12.21
모음사전 ( 84512 /프로그래머스 / JavaScript)  (0) 2021.12.12
거리두기 확인하기 (81302 / 프로그래머스 / JavaScript)  (0) 2021.12.02
'Problem Solving/Algorithm Practice' 카테고리의 다른 글
  • [SWEA][D1] 2043. 서랍의 비밀번호 Java
  • 오픈채팅방 (42888 / 프로그래머스 / JavaScript)
  • 모음사전 ( 84512 /프로그래머스 / JavaScript)
  • 거리두기 확인하기 (81302 / 프로그래머스 / JavaScript)
WHITE_FROST
WHITE_FROST
개발공부리뷰블로그
  • WHITE_FROST
    하얀하얀IT
    WHITE_FROST
  • 전체
    오늘
    어제
    • 분류 전체보기 (135)
      • Infra (3)
      • Project & Troubleshooting (14)
        • Troubleshooting (7)
        • Dev Tools (4)
      • Frontend (29)
        • Next.js (9)
        • React (13)
        • TypeScript (2)
        • JavaScript (5)
      • Mobile (17)
        • React Native (16)
        • Android (1)
      • Backend & Data (7)
        • Database (3)
        • Java (1)
        • Python (2)
        • Design Pattern (1)
      • AI (7)
        • Models & API (1)
        • AI Notes (6)
        • AI Tools (0)
        • Local AI (0)
        • Concepts (0)
      • Problem Solving (52)
        • Algorithm Notes (6)
        • Algorithm Practice (46)
      • Growth Log (9)
        • Study Log (6)
        • Tips (0)
        • Etc (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    javascript
    백준
    react
    boj
    java
    reactnative
    Next.js
    Expo
    Claude
    error
    리액트네이티브
    티스토리챌린지
    React Hooks
    프로그래머스
    react-native
    react-native-maps
    코딩테스트
    알고리즘
    Python
    d1
    D2
    SWEA
    mongodb cloud
    React-Native cli
    ios
    코테
    Ai
    오블완
    hooks
    ReactHook
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
WHITE_FROST
124나라의 숫자 ( 12899 / 프로그래머스 / JavaScript)
상단으로

티스토리툴바