일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바
- @value
- 쿼리
- spring boot
- springboot
- 레오폴드
- 줄바꿈
- 다중DB
- 트랜잭션
- spring
- springframework
- application.properties
- Serializable
- mysql
- 롤백
- 660mbt
- vue.js
- Docker
- Object-oriented
- 개햄문자치환
- 개행문자
- 업로드 파일 용량
- Spring Framework
- sql
- 직렬화
- java
- 코테
- 개발환경
- query
- value 어노테이션
Archives
- Today
- Total
supremest.35 개발 블로그
[프로그래머스] 124 나라의 숫자 본문
해당문제
( 코딩학원 강사를 그만두고 국비지원 교육 듣는 초반에는 잘 풀었던 것 같은데, 요새는 문제 이해를 잘 못하겠다..)
지문 파악
10진법 | 124나라 | 10진법 | 124나라 |
1 | 1 | 6 | 14 |
2 | 2 | 7 | 21 |
3 | 4 | 8 | 22 |
4 | 11 | 9 | 24 |
5 | 12 | 10 | 41 |
- 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 리턴하도록 하는 문제.
- 124 나라에는 자연수만 존재하며 모든 수를 표현할 때 위의 표와 같이 1, 2, 4만 사용한다.
문제 풀이(Java)
- 인수분해를 통해 3진법 표기와 비슷하다는걸 알 수 있다.
10진법 | 3진법 | 124 나라 |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 10 | 4 |
4 | 11 | 11 |
5 | 12 | 12 |
6 | 20 | 14 |
9 | 100 | 24 |
15 | 120 | 114 |
- 3진법 표기법
- 3으로 나눈 나머지가 0일 때는 0으로 표시
- 3으로 나눈 나머지가 1일 때는 1로 표시
- 3으로 나눈 나머지가 2일 때는 2로 표시
- 124 나라 표기법
- 나머지가 1일 때와 2일 때는 3진법 표기와 같음
- 처음에는 나머지가 0일 때, 즉 나누어 떨어졌을 때는 4로 표시되어야 한다고 생각함
- 그런데 3일 때, 3진법 표기는 10 이기 때문에, 내가 이해한 124나라 표기법으로 표현한다면 24로 표현된다 (오답)
** 우리가 알고 있는 n진수는 0 ~ n-1 의 숫자로 표현되는 표현법이다. 124 나라에서는 0이 없으므로 3의 배수가 되었을 때 자릿수가 1 증가하는 것이 아니다. 따라서 몫에서 1을 빼준다.
class Solution {
public String solution(int n) {
String answer = "";
while (n > 0) {
int remainder = n%3;
n /= 3;
if (remainder == 0) {
answer = "4" + answer;
n--;
} else if (remainder == 1) {
answer = "1" + answer;
} else if (remainder == 2) {
answer = "2" + answer;
}
}
return answer;
}
}
처음에는 위의 코드와 다르게 3으로 나눈 나머지가 1, 2인 표현법과 124 나라에서 표현하는 표현법이 같기 때문에 else if 두개를 쓰지 않고 else 문으로 합쳐서 answer = remainder + answer; 이라고 표현했다.
테스트 코드도 맞고 정확성도 맞았지만 효율성에서 점수를 얻지 못했다.
내가 생각한 이유는 remainder은 정수고 answer는 문자열이다.
정수 + 문자열 -> 문자열으로 자동 변환되는 것으로 알고 있는데 아마 이 과정이 효율적이지 않아 점수를 얻지 못한 것 같다.
참고 페이지 :
https://minnnne.tistory.com/66
https://velog.io/@dramatic/Algorithm-124-%EB%82%98%EB%9D%BC%EC%9D%98-%EC%88%AB%EC%9E%90
'Study > 코테연습' 카테고리의 다른 글
[프로그래머스] 문자열 압축 (0) | 2021.04.24 |
---|---|
[프로그래머스] 프린터 (0) | 2021.04.21 |
[프로그래머스] 기능개발 (0) | 2021.04.16 |
[프로그래머스] 스택/큐 - 주식가격 (0) | 2021.04.06 |