Coding Test

[Coding Test] 프로그래머스 1단계 - 푸드 파이트 대회

한비Skyla 2024. 10. 24. 23:31

📚 문제

 

✏️ 메모 

f[0]은 항상 1.

f[1]부터 봐야함.

f[i] / 2 의 몫의 수 만큼 i 를 문자열에 담아야 함. 

food 배열이 끝났을 때 0 을 붙이고,

0 이전에 나온 값을 뒤집어서 나열하기. 

 

https://hianna.tistory.com/543 

 

[Java] 문자열 거꾸로 뒤집기

문자열을 거꾸로 뒤집는 방법 2가지를 소개합니다. 반복문 사용하기 StringBuffer / reverse() 메소드 사용하기 1. 반복문 사용하기 코드 public class StringReverse { public static void main(String[] args) { // 문자열 S

hianna.tistory.com

 

🔎 문제해결

 

1. StringBuilder 사용

 

    public static String solution(int[] food) {
        StringBuilder answer = new StringBuilder();

        // 1. f[1]부터 순회
        for (int i = 1; i < food.length; i++) {
            // 2. f[i] / 2 의 몫 만큼 i를 문자열에 추가
            for (int j = 0; j < food[i] / 2; j++) {
                answer.append(i);
            }
        }
        // 3. 중간에 0 추가
        answer.append(0);

        // 4. 현재 문자열의 0 이전 부분을 뒤집어서 추가
        StringBuilder reversedPart = new StringBuilder(answer.substring(0, answer.length() - 1)).reverse();
        answer.append(reversedPart);

        return answer.toString();
    }

 

 

 

2. + 연산자 사용

    public static String solution(int[] food) {
        String answer = "";

        // 1. f[1]부터 순회
        for (int i = 1; i < food.length; i++) {
            // 2. f[i] / 2 의 몫 만큼 i를 문자열에 추가
            for (int j = 0; j < food[i] / 2; j++) {
                answer += i;
            }
        }

        // 3. 중간에 0 추가
        answer += 0 ;

        // 4. 현재 문자열의 0 이전 부분을 뒤집어서 추가
        for (int i = answer.length() -2; i >= 0; i-- ){
            // answer 문자열의 0 이전 인덱스부터 읽어서 하나씩 이어붙임.
            answer = answer + answer.charAt(i);
        }
        return answer;

    }

 

💡 StringBuilder 와 + 연산자, concat 의 차이점 

 

concat 명령어는 더하는 값을 new String 으로 계속 만들어서, 추가할 때마다 새로운 주소값을 할당 시킨다. 

StringBuilder 명령어는 append 를 통해 문자열을 붙여주는데, 추가할 때에도 주소값이 변화하지 않는다. 

 

+ 연산자는 문자열을 StringBuilder 로 변환한 뒤, append 로 문자열을 더하고, 다시 toString 함수로 문자열로 반환한다. 

 

[JAVA] 문자열 붙이는 방식의 차이(concat, +, StringBuilder)

자바에서 String타입을 붙일 때 사용하는 방법은 다양하다. 기본 연산자인 +를 비롯하여 String Builder, concat 모두 들어보거나 써본 용어일 것이다. 근데 동작 방식에 어떤 차이가 있을까? 먼저 결과

devdy.tistory.com