본문 바로가기
코딩테스트/programming_JAVA

[Java] 프로그래머스_134240 : 푸드 파이트 대회

by prometedor 2023. 12. 17.

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) 을 사용하여 코드를 간결하게 만들어 실행 시간을 단축시켰다.

깨달은 바 : 불필요한 반복문 대신 메서드를 사용할 수 있다면 사용보도록 해야겠다.