문제 설명
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
나의 풀이
class Solution {
public String solution(int[] food) {
String answer = "";
StringBuffer sb = new StringBuffer();
for(int i = 1; i < food.length; i++){
int count = food[i] / 2; // 1
for(int j = 0; j < count; j++){
sb.append(i);
}
}
// 아래처럼 하면 원본 sb를 reverse 하게된다.
// StringBuffer sb2 = sb.reverse();
StringBuffer reversed = new StringBuffer(sb).reverse(); // 복사 후 뒤집기
sb.append(0);
sb.append(reversed);
answer = sb.toString();
return answer;
}
}
- StringBuffer sb2 = sb.reverse()는 원본 sb를 reverse 하게된다.
- 그래서 StringBuffer reversed = new StringBuffer(sb).reverse();로 하고 append()로 붙여야한다.
0을 중심으로 큰 것부터 채워 나가는 풀이
class Solution {
public String solution(int[] food) {
String answer = "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;
}
}
초기 상태
String answer = "0";
i = 3 (food[3] = 6 → 3개)
j = 0 → answer = 3 + "0" + 3 → "303"
j = 1 → answer = 3 + "303" + 3 → "33033"
j = 2 → answer = 3 + "33033" + 3 → "3330333"
i = 2 (food[2] = 4 → 2개)
j = 0 → answer = 2 + "3330333" + 2 → "233303332"
j = 1 → answer = 2 + "233303332" + 2 → "22333033322"
i = 1 (food[1] = 3 → 1개)
j = 0 → answer = 1 + "22333033322" + 1 → "1223330333221"
최종 결과: "1223330333221"
'👨💻 Coding Test > Programers' 카테고리의 다른 글
[Programmers/Java/Lv.1/수학] 64.기사단원의 무기 (0) | 2025.07.02 |
---|---|
[Programmers/Java/Lv.1/HashMap] 63.과일 장수 (1) | 2025.06.30 |
[Programmers/Java/Lv.1/문자열] 61.햄버거 만들기 (0) | 2025.06.29 |
[Programmers/Java/Lv.1/문자열] 60.옹알이 (2) (0) | 2025.06.29 |
[Programmers/Java/Lv.1/수학] 59.콜라 문제 (0) | 2025.06.28 |