본문 바로가기
algorithm/Programmers

[JAVA] A로 B 만들기

by 이쟝 2023. 3. 20.

https://school.programmers.co.kr/learn/courses/30/lessons/120886

 

프로그래머스

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

programmers.co.kr

[Hint] before과 after를 정렬했을 때 둘이 일치해야 함!

1. before와 after를 char[ ]형으로 변환해서 sort 해준다음 Arrays.equals( )를 통해서 같은지 안같은지 구분

2. alphabet이라는 char[ ] 배열 생성 뒤, 각각 해당하는 알파벳 인덱스에 값 넣고, 빼기, 만약에 before와 after가 같다면 배열에 아무것도 남지 않기 때문에 아무것도 남지 않는다면 1 남는게 있다면 0

1.

import java.util.Arrays;

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

        return Arrays.equals(charB, charA) ? 1 : 0;
    }
}

 

  • Arrays.equals()를 이용해서 배열이 똑같은 지 확인 가능!

2. 

class Solution {
    public int solution(String before, String after) {
        
        char[] alphabet = new char[26];
        for(char c : before.toCharArray()){
            alphabet[c - 'a']++;
        }

        for(char c : after.toCharArray()){
            alphabet[c - 'a']--;
        }

        for(char c : alphabet) {
            if(c != 0) return 0; // if(c != 0 == true) return 0;
        }

        return 1;
    }
}

 

  • for문을 3번돌려서 느릴 줄 알았는데 1번과 크게 별 차이가 안나서 놀랐다.
  • char 배열에서 null 값을 비교하려면 !=0으로 비교해야 한다. char 배열은 원시타입이 아니기 때문에 null을 사용할 수 없다..! !=0 해서 값이 있으면 true이고, 값이 없으면 false! if(c != 0 == true) return 0;

'algorithm > Programmers' 카테고리의 다른 글

[JAVA] 잘라서 배열로 저장하기  (0) 2023.03.23
[JAVA] K의 개수  (0) 2023.03.20
[JAVA] 문자열 정렬하기 (2)  (0) 2023.03.20
[JAVA] 숫자 찾기  (0) 2023.03.20
[JAVA] 최댓값 만들기(2)  (0) 2023.03.20