코딩테스트/programming_JAVA
[Java] 프로그래머스_134240 : 푸드 파이트 대회
prometedor
2023. 12. 17. 17:35
String.repeat 이용하기
푸드 파이트 대회 : Level1
https://school.programmers.co.kr/learn/courses/30/lessons/134240
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음 작성한 코드
class Solution {
public String solution(int[] food) {
String str = "";
for (int i = 1; i < food.length; i++) {
for (int j = 0; j < food[i] / 2; j++) {
str += String.valueOf(i);
}
}
StringBuffer sb = new StringBuffer(str);
String revStr = sb.reverse().toString();
str += "0" + revStr;
return str;
}
}
ㄴ 실행 시간이 다소 오래 걸리는 것을 확인하였다.
두 번째 작성한 코드
class Solution {
public String solution(int[] food) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i < food.length; i++) {
sb.append(String.valueOf(i).repeat(food[i] / 2));
}
String answer = sb + "0";
return answer + sb.reverse();
}
}
ㄴ repeat 메서드를 이용하여 for 문을 1개 줄였다.
String.repeat(int count)
String.repeat(int count) 메서드는 주어진 문자열을 지정된 횟수만큼 반복하여 새로운 문자열을 생성한다.
문제점 : 불필요한 반복문으로 인해 시간이 생각보다 많이 걸려서 리팩토링을 하고자했다.
해결 방법 : String.repeat(int count) 을 사용하여 코드를 간결하게 만들어 실행 시간을 단축시켰다.
깨달은 바 : 불필요한 반복문 대신 메서드를 사용할 수 있다면 사용보도록 해야겠다.