본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - A로 B 만들기

by nam_ji 2024. 6. 27.

A로 B 만들기

문제

  • 문자열 before, after가 매개변수로 주어집니다.
  • before의 순서를 바꿔
  • after를 만들 수 있으면 1을
  • 아니라면 0을 출력하는 문제입니다.
  • before after result
    "olleh" "hello" 1
    "allpe" "apple" 0


테스트 (인텔리제이)

  • 처음 문제를 풀었을 때 순서를 뒤집었을 때 일치하면 1 아니면 0일거라 생각하고
  • StringBuilder에 before를 담고 reverse 메서드를 사용하여 문자열을 뒤집고 비교했지만 실패
  • 원인을 찾아보니 before의 순서를 이리저리 바꿨을 때 일치하면 1 아니라면 0이라는 것을 알게되었습니다.
class Solution {
    public int solution(String before, String after) {
        StringBuilder reverse = new StringBuilder(before);
        int answer = 0;
        
        if (after.contains(sb.reverse())) {
            answer = 1;
        } 
        
        return answer;
    }
}

https://school.programmers.co.kr/questions/37596

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

  • 그래서 풀이를 다시하여
  • before와 after를 char 배열로 만들어줍니다.
  • Arrays 클래스의 sort 메서드로 before와 after를 정렬해줍니다.
  • 정렬된 before와 after를 다시 String으로 변환해주고 비교하면 됩니다.
import java.util.Arrays;

public class A로_B_만들기 {
  public static void main(String[] args) {
    /*
    문자열 before, after가 매개변수로 주어집니다.
    before의 순서를 바꿔
    after를 만들 수 있으면 1을
    아니라면 0을 출력하는 문제입니다.

    입출력 예
    before	after	  result
    "olleh"	"hello"	1
    "allpe"	"apple"	0

    입출력 설명
    "olleh"의 순서를 바꾸면 "hello"를 만들 수 있습니다.
    "allpe"의 순서를 바꿔도 "apple"을 만들 수 없습니다.
     */

    String before = "olleh";
    String after = "hello";
    char[] c1 = before.toCharArray();
    char[] c2 = after.toCharArray();

    Arrays.sort(c1);
    Arrays.sort(c2);

    String str1 = new String(c1);
    String str2 = new String(c2);

    System.out.println(str1.equals(str2) ? 1 : 0);
  }
}

프로그래머스 코드

import java.util.*;

class Solution {
    public int solution(String before, String after) {
        char[] c1 = before.toCharArray();
        char[] c2 = after.toCharArray();
        
        Arrays.sort(c1);
        Arrays.sort(c2);
        
        String str1 = new String(c1);
        String str2 = new String(c2);
        
        return str1.equals(str2) ? 1 : 0;
    }
}