728x90
문제 설명
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
제한사항
- age는 자연수입니다.
- age ≤ 1,000
- PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.
입출력 예ageresult
age | result |
23 | "cd" |
51 | "fb" |
100 | "baa" |
입출력 예 설명
입출력 예 #1
- age가 23이므로 "cd"를 return합니다.
입출력 예 #2
- age가 51이므로 "fb"를 return합니다.
입출력 예 #3
- age가 100이므로 "baa"를 return합니다.
1
2
3
4
5
6
7
8
9
|
class Solution {
public String solution(int age) {
String answer = "";
for(char ch : (age+"").toCharArray()) {
answer += (char)('a' + (ch-'0'));
}
return answer;
}
}
|
ASCII 코드 표를 검색해 보면 A ~ Z(대문자) : 65 ~ 90 a ~ z(소문자) : 97 ~ 122 0 ~ 9(숫자) : 48 ~ 57 입니다. 숫자 + 문자열의 결과는 문자열입니다. 문자열로 만들고 char Array 를 만들어 반복합니다. (age+"").toCharArray() char형의 숫자를 1자리 정수로 바꾸는 방법입니다. 빼기 '0'을 해주면 ASCII 코드값으로 변환되어 계산되므로 숫자가 됩니다. '0' - '0' = 48 - 48 = 0 '1' - '0' = 49 - 48 = 1 '2' - '0' = 50 - 48 = 2 . . '9' - '0' = 57 - 48 = 9 그렇다면 숫자를 char로 바꾸는 방법은 더하기 '0'을 해주면 된다. (char)(0 + '0') = (char)(0 + 48) = (char)(48) = '0' (char)(1 + '0') = (char)(1 + 48) = (char)(49) = '1' . , (char)(9 + '0') = (char)(9 + 48) = (char)(57) = '9' 마찬가지로 영문자와 숫자를 더하면 다음과 같이 계산됩니다. (char)('a' + 0) = (char)(97 + 0) = (char)(97) = 'a' (char)('a' + 1) = (char)(97 + 1) = (char)(98) = 'b' . . (char)('a' + 25) = (char)(97 + 25) = (char)(122) = 'z' 위의 방법으로 숫자를 영문자로 바꾸면 되는 문제입니다. (char)('a' + (ch-'0')); 위에서 나온 문자를 계속 더해주면 문제가 해결됩니다. |
1
2
3
4
5
6
7
8
|
import java.util.stream.Collectors;
class Solution {
public String solution(int age) {
return (age+"").chars()
.mapToObj(operand -> ((char) (49 + operand))+"")
.collect(Collectors.joining());
}
}
|
Stream을 이용하여 풀어도 됩니다. chars()를 이용하여 IntStream을 만들고 maptoObj()로 숫자 1개를 문자로 변환하여 String<Stream>을 만든 후 collect(Collectors.joining()) 로 문자열을 최종 생성합니다.
|
728x90
'프로그래머스 코딩(자바) > Level 0' 카테고리의 다른 글
Programmers Level 0 - 약수 구하기 (0) | 2023.03.03 |
---|---|
Programmers Level 0 - 피자 나눠 먹기 (2) (0) | 2023.03.03 |
Programmers Level 0 - 배열 회전 시키기 (0) | 2023.03.02 |
Programmers Level 0 - 인덱스 바꾸기 (0) | 2023.03.02 |
Programmers Level 0 - 가장 큰 수 찾기 (0) | 2023.03.02 |