본문 바로가기
Algorithm/프로그래머스 코딩테스트 문제풀이전략

[프로그래머스] Lv.0 A로 B 만들기

by 미네구스 2024. 5. 5.

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

 

프로그래머스

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

programmers.co.kr

 

풀이 접근 방법

1. 해쉬맵을 선언해서 각 문자열의 문자, 등장횟수를 저장한다.

2. 해쉬맵을 비교하여 다르다면 0을 리턴하고, 전부 같다면 1을 리턴한다.

import java.util.*;
class Solution {
    public int solution(String before, String after) {
        Map<Character,Integer> m1 = new HashMap<>();
        Map<Character,Integer> m2 = new HashMap<>();
        for(int i = 0; i < before.length(); i++){
            m1.put(before.charAt(i), m1.getOrDefault(before.charAt(i), 0) + 1);
            m2.put(after.charAt(i), m2.getOrDefault(after.charAt(i) , 0) + 1);
        }
        
        for(char c : m1.keySet()) {
            if (m1.get(c) != m2.get(c)) return 0;
        }
        return 1;
    }
}

 

 

다른 사람 풀이

import java.util.Arrays;
class Solution {
    public int solution(String before, String after) {
        char[] a = before.toCharArray();
        char[] b = after.toCharArray();
        Arrays.sort(a);
        Arrays.sort(b);

        return new String(a).equals(new String(b)) ? 1 :0;
    }
}

 

먼저 char [] 배열로 변환하고 sorting해서 equals 연산을 하면 더 쉽게 가능하다...