나의 풀이
class Solution {
public String solution(int age) {
String answer="";
int[] array = Arrays.stream(String.valueOf(age).split("")).mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(array));
for(int x:array){
answer+=(char)(x+97);
}
return answer;
}
}
▶ int타입의 age를 String타입으로 바꾸고
▶ String을 split()메서드를 이용해서 String[ ] 배열을 만들고,
▶ String 배열을 Stream<String>으로 감싼 다음에
▶ mapToInt()를 이용해서 Stream<Integer> 타입으로 바꾸고
▶ 최종적으로는 toArray()메서드를 이용해여 int[ ] 배열로 반환을 하였다.
▶ char연산자를 이용해서 정수를 '문자'로 바꾸었으며
▶ 소문자a가 아스키코드 97에 해당하기 때문에 97을 더해 주었다.
다른 사람의 풀이
import java.util.stream.Collectors;
class Solution {
public String solution(int age) {
return String.valueOf(age).chars().mapToObj(operand -> String.valueOf((char) (49 + operand))).collect(Collectors.joining());
}
}
▶ String.valueOf() 메서드는 int타입의 age를 String타입으로 바꾼다.
▶ char타입은 본질적으로 숫자이기 때문에 chars()메서드는
String타입을 IntStream타입(기본형스트림)으로 반환을 한다.
▶ mapToObj()는 중간연산에 해당하며, 다른 자료형으로 형변환할때 사용된다.
▶ 여기서 mapToObj()는 기본형스트림(ex-IntStream)을 Stream타입으로 변환한다.
▶ mapToObj메서드의 괄호안에 있는 operand는 스트림에 들어 있는 "요소"를 의미하며,
▶ 해당 요소는 숫자가 더해진 다음 char형으로 변환된 후에
String.valueOf()에 의해 String타입으로 바뀐다.
▶ collect()는 Stream의 요소들을 다른 자료형으로 변환하며,
▶ joining()은 Collectors가 가지고 있는 메서드로 문자열 스트림의 모든 요소를
"하나의 문자열"로 연결해 반환한다.
'프로그래머스(자바) > LV.0(자바)' 카테고리의 다른 글
모스부호(1) - HashMap get(key), put(key, value), indexOf(),substring() (0) | 2022.11.25 |
---|---|
합성수 찾기 → 이중 stream★ filter()를 두 번 사용할 필요x (0) | 2022.11.25 |
369게임 → count()★, Stream개념정리용★ (0) | 2022.11.25 |
피자 나뉘 먹기(2) ★최소공배수, 최대공약수★ (0) | 2022.11.25 |
숫자 찾기→문자열+숫자=문자열 (0) | 2022.11.25 |