반응형
알고리즘
JAVA 프로그래머스 3진법 뒤집기
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/68935
2. 풀이
Integer.parseInt.(a)는 String타입의 숫자배열 a를 Int타입으로 변경하는 함수.
Integer.toString(숫자, 진법)을 이용하면 숫자를 진법으로 변경된 문자로 얻을수 있다.
Integer.parseInt(문자, 진법)을 이용하면 문자를 진업으로 변경된 숫자를 얻을수 있다.
진수, 제곱근 같은 문제는 바로바로 풀이법이 생각나지 않는게 문제다. 연습을 더 많이 해야할듯한다.
class Solution {
public int solution(int n) {
int answer = 0;
String str = "";
// 앞뒤 반전 3진법으로 바꾸기
while (n != 0){
str += String.valueOf(n%3);
n /= 3;
}
str = str.substring(0, str.length());
// System.out.println(str);
//바로 3진수로 바꾸는 함수
answer = Integer.parseInt(str, 3);
// long num = Long.parseLong(str);
// for (int i=0; i != 0; i*=3){
// answer += num % 10 * i;
// num /= 10;
// }
return answer;
}
}
[다른사람의 풀이]
아래 풀이법을 보면 Integer.toString(숫자, 진법), Integer.parseInt(문자, 진법)을 이용하여 짧게 풀이하였다.
class Solution {
public int solution(int n) {
return Integer.parseInt(new StringBuilder(Integer.toString(n, 3))
.reverse() //뒤집기
.toString(),3);
}
}
StringBuilder를 사용하였는데 StringBuilder는 String과 문자열을 더할 때 기존의 데이터에 더하는 방식을 사용하기 때문에 속도가 빠르며 상대적으로 부하가 적음. 긴문자열을 더해야하는 상황이 발생할 경우 StringBuilder를 사용하면 좋음.
[사용법]
StringBuilder sb = new StringBuilder();
sb.append("ABC");
sb.append("DEF");
System.out.pringln(sb.toStrinng());
StringBuilder에는 append()가 있는데, 이는 문자열을 더하는 역할.
만들어진 문자열을 출력하기 위해서는 StringBuilder의 인스턴스인 sb의 toString()을 사용
반응형
'알고리즘 > Java' 카테고리의 다른 글
[JAVA] 프로그래머스 로또의 최고 순위와 최저 순위 (0) | 2021.11.12 |
---|---|
[JAVA] 프로그래머스 문자열 내 p와 y의 개수 (0) | 2021.11.11 |
[JAVA] 프로그래머스 문자열 내 마음대로 정렬하기 (0) | 2021.11.11 |
[JAVA] 프로그래머스 같은 숫자는 싫어 (0) | 2021.11.11 |
[JAVA] 프로그래머스 하샤드 수 (0) | 2021.11.11 |