문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/134240
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
import java.lang.StringBuilder;
import java.util.Stack;
class Solution {
public String solution(int[] food) {
StringBuilder answer = new StringBuilder();
Stack<Integer> stack = new Stack();
for(int i = 1; i < food.length; i++) {
if(food[i] == 1) {
continue;
}
for(int j = 0; j < food[i]/2; j++) {
answer.append(i);
stack.push(i);
}
}
answer.append(0);
while(!stack.isEmpty()) {
answer.append(stack.pop());
}
return answer.toString();
}
}
정방향으로 한번 담고 그걸 뒤바꿔서 담으면 될 거 같은데 적당한 함수가 안 떠올라서 그냥 Stack을 사용하기로 했다. Java 공부를 많이 해야겠다..
문제점 : 어짜피 1/2 는 0이라 for문 안 도니까 if(food[i] == 1) {continue;} 이 부분이 필요가 없었다.
수정된 풀이
import java.lang.StringBuilder;
import java.util.Stack;
class Solution {
public String solution(int[] food) {
StringBuilder answer = new StringBuilder();
Stack<Integer> stack = new Stack();
for(int j = 0; j < food[i]/2; j++) {
answer.append(i);
stack.push(i);
}
}
answer.append(0);
while(!stack.isEmpty()) {
answer.append(stack.pop());
}
return answer.toString();
}
}
다른 사람 풀이
class Solution {
public String solution(int[] food) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i < food.length; i++) {
sb.append(Integer.toString(i).repeat(food[i] / 2));
}
return sb.toString() + "0" + sb.reverse().toString();
}
}
StringBuilder의 reverse함수를 사용하면 되는 군 !
repeat을 활용하여 for문을 하나만 사용하셨다.
repeat
repeat(n) : 문자열 n번 반복
"A".repeat(3) -> "AAA"
Java 11 부터 추가된 함수로 문자열을 n번 반복해주는 함수이다.
'개발 > 코테 TIL' 카테고리의 다른 글
[코테TIL#16] 프로그래머스 가장 가까운 같은 글자 (0) | 2025.03.12 |
---|---|
[99클럽 코테 스터디 TIL#15일차] 프로그래머스 피로도 (0) | 2024.11.18 |
[99클럽 코테 스터디 TIL#14일차] 프로그래머스 카펫 (0) | 2024.11.17 |
[99클럽 코테 스터디 TIL#13일차] 백준 27961 고양이는 많을수록 좋다 (0) | 2024.11.10 |
[99클럽 코테 스터디 TIL#12일차] 백준 7569 토마토 (0) | 2024.11.09 |