문제 링크
Note
StringBuffer로 reverse를 사용했다.
다른 사람 풀이를 보니 answer의 양쪽에 추가하는 쉬운 but 떠올리진 못한 방법이 인상적이어서 남겨두기
Key
- StringBuffer
- .reverse().toString()
제출한 코드
class Solution {
public String solution(int[] food) {
String answer = "";
// food의 인자를 하나씩 꺼내서 /2 의 값만큼 answer의 앞에서부터 추가
// answer에 0을 추가하고 대칭해서 결과 리턴
int i = 0;
String ans = ""; // 임시 문자열
for(int f : food){
if(f/2 > 0){
for(int count = 1; count <= f/2; count++){
ans += i;
}
i++;
// System.out.println("f : " + f + " ans : " + ans + " i : " + i);
} else {
i++;
}
}
StringBuffer ansBuffer = new StringBuffer(ans);
String ansReverse = ansBuffer.reverse().toString();
answer = ans + "0" + ansReverse;
return answer;
}
}
이중 for 문 + 단순한 방법으로 해결한 풀이
String 변수들을 덜 쓰기 때문에 메모리 사용은 줄었지만 시간은 늘었다.
class Solution {
public String solution(int[] food) {
String answer = "0";
// food의 높은 인덱스의 인자부터 꺼내서 /2 한 몫의 횟수만큼 0의 양 옆에 추가한다.
for(int i = food.length -1; i > 0 ; i--){
for(int j = 0 ; j < food[i]/2 ; j++){
answer = i + answer + i ;
}
}
return answer;
}
}
반응형
'코딩테스트 > Java' 카테고리의 다른 글
프로그래머스/자바 lv.0 최빈값 구하기 - HashMap에서 최대 Value구하기 Collections.max() (0) | 2024.06.29 |
---|---|
프로그래머스/자바 lv.0 대소문자 바꿔서 출력하기 - toCharArray(), isLowerCase(), toUpperCase() (0) | 2024.06.24 |
프로그래머스/자바 lv.1 정수 내림차순으로 배치하기 (4) | 2024.04.04 |