프로그래머스 A로 B 만들기

KIMYEONGJUN·2026년 9월 16일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.

내가 이 문제를 보고 생각해본 부분

문자열은 자바에서 직접 정렬하기 어렵기 때문에, 한 글자씩 쪼개서 char 배열 형태로 변환한다.
배열에 담긴 문자들을 알파벳 순서대로 나란히 정렬한다.
예를 들어 "olleh"와 "hello"를 각각 정렬하면 둘 다 "ehllo"가 된다.
정렬을 위해 쪼개놓았던 문자 배열들을 다시 하나의 문자열로 합쳐준다.
두 정렬된 문자열이 서로 완전히 같은지 비교한다.
내용이 똑같다면 구성이 같다는 뜻이므로 1을 리턴하고, 다르면 0을 리턴한다.
작성한 Solution 클래스의 기능을 실제로 실행하고 테스트해 보기 위한 메인 메서드이다.
before1과 after1을 넣었을 때의 결과와 before2와 after2를 넣었을 때의 결과를 콘솔에 출력하여 정상적으로 동작하는지 확인한다.

코드로 구현

import java.util.Arrays;

class Solution {
    public int solution(String before, String after) {
        char[] beforeChars = before.toCharArray();
        char[] afterChars = after.toCharArray();
        Arrays.sort(beforeChars);
        Arrays.sort(afterChars);

        String sortedBefore = new String(beforeChars);
        String sortedAfter = new String(afterChars);
        
        if (sortedBefore.equals(sortedAfter)) {
            return 1;
        } else {
            return 0;
        }
    }
}

프로그래머스 코드

package programmers.programmers2;

import java.util.Arrays;

// 프로그래머스 A로 B 만들기
public class Main145 {
    static class Solution {
        public int solution(String before, String after) {
            char[] beforeChars = before.toCharArray();
            char[] afterChars = after.toCharArray();
            Arrays.sort(beforeChars);
            Arrays.sort(afterChars);

            String sortedBefore = new String(beforeChars);
            String sortedAfter = new String(afterChars);

            if (sortedBefore.equals(sortedAfter)) {
                return 1;
            } else {
                return 0;
            }
        }
    }

    public static void main(String[] args) {
        Solution sol = new Solution();

        // 테스트 예시 1
        String before1 = "olleh";
        String after1 = "hello";
        int result1 = sol.solution(before1, after1);
        System.out.println(result1); // 기대값: 1

        // 테스트 예시 2
        String before2 = "allpe";
        String after2 = "apple";
        int result2 = sol.solution(before2, after2);
        System.out.println(result2); // 기대값: 0
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글