99클럽 코테 스터디 35일차 TIL + 정렬

2024. 12. 1. 21:09Algorithm Problem Solving

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

1. 알고리즘! 생각해보자

1) X, Y를 한자리씩 비교하기 위해 배열 변환 후 정렬
2) 숫자 비교 후 일치할 경우 idx 감소
3) 공통으로 나타나는 정수가 없을 경우 / 정수 k가 0으로만 구성되어 있을 경우

2. 해결 코드

import java.util.Arrays;

class Solution {
    public String solution(String X, String Y) {
        // X, Y의 짝꿍이 존재X -> -1 
        // X, Y의 짝꿍이 0으로만 구성되어 있다면, -> 0
        
        // 1. X, Y를 한자리씩 비교하기 위해 배열 변환 후 정렬
        char[] charX = X.toCharArray();
        char[] charY = Y.toCharArray();
        Arrays.sort(charX);
        Arrays.sort(charY);
        
        // 2. 숫자 비교 후 일치할 경우 idx 감소
        StringBuilder answer = new StringBuilder();
        int idxX = charX.length -1;
        int idxY = charY.length -1;
        
        while(idxX >= 0 && idxY >= 0){
            // 두수가 짝꿍을 이룰 경우
            if(charX[idxX] == charY[idxY]){
                answer.append(charX[idxX]);
                idxX--;
                idxY--;
            }
            else if (charX[idxX] > charY[idxY]) {
                idxX--;
            } else {
                idxY--;
            }
        }
        
        // 공통으로 나타나는 정수가 없을 경우
        if (answer.length() == 0) {
            return "-1";
        }

        // 정수 k가 0으로만 구성되어 있을 경우
        if (answer.toString().matches("0+")) {
            return "0";
        }
        
        return answer.toString();
    }
}

3. 레퍼런스

 

[프로그래머스] Lv1.숫자짝꿍.java

https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞

kimtjrgus.tistory.com