Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- domain model
- MySQL
- 트리
- 스택
- 정렬
- dfs
- 멘딕스
- microflow
- 가중치없는그래프
- Bruteforce
- algorithm
- 백트래킹
- 그래프
- Mendix
- 자료구조
- SQL
- Recursion
- git
- 해시맵
- 집합
- 프로그래머스
- Sort
- 알고리즘
- 반효경교수님
- lcap
- 자바
- 완전탐색
- 매개변수 탐색
- 이분탐색
- 재귀
Archives
- Today
- Total
mondegreen
[240415] 알고리즘 리부트 49일차 - 프로그래머스 124 나라의 숫자 자바 본문
반응형
10진법의 수를 3진법으로 바꾸며 나머지는 진법의 수로 몫은 0이 될 때까지 다시 나누는 몫으로 처리하여 구한다. 기존 3진법의 0,1,2 대신 1,2,4를 쓰는 방식의 풀이이다.
import java.util.*;
class Solution {
public String solution(int n) {
StringBuilder sb = new StringBuilder();
while(n > 0){
int remainder = n % 3;
if(remainder == 0)
sb.insert(0, "4");
else if(remainder == 1)
sb.insert(0, "1");
else if(remainder == 2)
sb.insert(0, "2");
n = (n - 1) / 3;
}
return sb.toString();
}
}
아래는 정확성 테스트에서는 다 맞으나 효율성 테스트에서는 시간 초과가 발생하는 코드이다. 진법을 사용하지 않고 처리했을 때의 풀이방식이다.
import java.util.*;
class Solution {
public static Deque<Long> qu;
public static int[] arr = {1,2,4};
public String solution(int n) {
qu = new ArrayDeque<>();
StringBuilder sb = new StringBuilder();
int cnt = 0;
if(n == 1) return "1";
else if(n == 2) return "2";
else if(n == 3) return "4";
qu.offer(1L);
qu.offer(2L);
qu.offer(4L);
cnt = 3;
long thisNum = 0L;
while(true){
thisNum = qu.poll();
for(int i = 0; i< arr.length; i++){
sb.setLength(0);
long newNum = Long.parseLong(sb.append(thisNum).append(arr[i]).toString());
qu.offer(newNum);
cnt++;
if(cnt == n) return Long.toString(newNum);
}
}
}
}
반응형
'알고리즘 풀이 및 리뷰 > 프로그래머스' 카테고리의 다른 글
[240418] 알고리즘 리부트 51일차 - 프로그래머스 택배상자 자바 (0) | 2024.04.18 |
---|---|
[240417] 알고리즘 리부트 50일차 - 프로그래머스 모음사전 자바 (1) | 2024.04.18 |
[240411] 알고리즘 리부트 48일차 - 프로그래머스 여행경로 자바 (0) | 2024.04.11 |
[240403] 알고리즘 리부트 44일차 - 프로그래머스 타겟 넘버 자바 (0) | 2024.04.03 |
[240402] 알고리즘 리부트 44일차 - 프로그래머스 전력망 둘로 나누기 자바 (0) | 2024.04.03 |