-
[코딩테스트] 프로그래머스 - 124 나라의 숫자(Java, Level2)코딩테스트/프로그래머스 2022. 12. 7. 23:12728x90
안녕하세요.
오늘 풀어볼 문제는 124 나라의 숫자입니다.
이번 문제는 for문으로 1~n까지 다 구하는 식으로 했다가 시간초과로 실패하고
다시 재귀로 수정하며 푼 문제입니다.
문제링크입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12899
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
다음은 제가 작성한 코드입니다.
이번에는 +4점을 줬습니다. 점수의 기준이 있나 궁금하네요~
class Solution { String answer=""; public String solution(int n) { depth(n); return answer; } public void depth(int n) { if(n==0) return; int rest=n%3; int div=n/3; if(rest==0) { answer="4"+answer; if(div<=0) return; else depth(div-1); } else if(rest==1) { answer="1"+answer; if(div<=0) return; else depth(div); } else if(rest==2) { answer="2"+answer; if(div<=0) return; else depth(div); } } }
코드입니다.
제가 생각한 아이디어 부분입니다.
① 1,2,4가 반복되기에 저는 반복 주기를 3으로 설정
② 수의 규칙을 찾는데 3은 4 4는 11 즉 124나라의 숫자 끝자리는 자연수의 %한 값
- n%3==0이면 4
- n%3==1이면 1
- n%3==2이면 2 이런식으로 진행했습니다.
③ 마지막 자리 숫자를 찾았고 그 다음자리 숫자는 n/3의 값 즉 몫을 n과같이 반복처리 n이 0이 될때까지
④ 다만 여기서 주의할점! n%3할때 나머지가 0이면 실제적으로 1,2,4의 반복이기 실질적으로 3번째
ex) n이6이라면 몫이 2 나머지가 0이 아니라, 몫이 1 나머지가 3으로 계산
이런 아이디어를 갖고 몫이 0이나올때까지 계속 숫자를 나누어주며 재귀함수를 태웠습니다.
아이디어를 막상 말로 설명하려니 꼬이네요~ ㅠㅠ
오늘은 간단하게 마무리하겠습니다.
감사합니다:D
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[코딩테스트] 프로그래머스 - 큰 수 만들기(Java, Level2, 실패코드) (0) 2022.12.09 [코딩테스트] 프로그래머스 - 식품분류별 가장 비싼 식품의 정보 조회하기(MySQL, Level4) (0) 2022.12.07 [코딩테스트] 프로그래머스 - 5월 식품들의 총매출 조회하기(MySQL, Level4) (0) 2022.12.07 [코딩테스트] 프로그래머스 - 쿼드압축 후 개수 세기(Java, Level2) (0) 2022.12.07 [코딩테스트] 프로그래머스 - 성분으로 구분한 아이스크림 총 주문량(MySQL, Level2) (0) 2022.12.06