| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- SQL
- c#
- Java
- 자바
- level4
- Spring Boot
- MySQL
- 씨샵
- level3
- 스프링부트
- WSL
- delegate
- 코테
- level2
- JPA
- 프로그래머스
- programmers
- 쿼리
- 일반화
- 운전면허
- 백준
- Python
- 3일컷
- 1931번
- MVVM
- 보통2종
- 닫기버튼
- 코딩테스트
- springboot
- WPF
- Today
- Total
욱꾸미의 주꾸미 발
[코딩테스트] 프로그래머스 - 124 나라의 숫자(Java, Level2) 본문
안녕하세요.
오늘 풀어볼 문제는 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 |