모바일 개발하는 자바리안의 메모장

자바(JAVA) - 튜플(Programmers : 64065) 본문

Java/Java.algorithm

자바(JAVA) - 튜플(Programmers : 64065)

자바리안 2022. 3. 19. 16:34
반응형

https://programmers.co.kr/learn/courses/30/lessons/64065

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

2레벨 치고는 어렵지 않았던 문제,

늘 그랬듯이 문제를 이해하는데에 조금 어려움이 있었으나, 풀이 과정을 보면서 쉽게 요하는 부분을 파악할 수 있었다.

 

코드는 크게 2스탭으로 나뉘는데,

1. 투플 원소를 만들어 2차원 배열에 담아준다.

2. 투플 원소를 담은 2차원 배열과 HashSet을 활용하여 중복되지 않은 값들을 확인한다.

 

첫번째 스탭에서 원소를 담는 2차원 배열은 String[원소 사이즈][원소에 포함된 숫자들의 배열] 구조이다.

아주 단순하게 가장 작은 사이즈의 원소부터 순차적으로 중복되는 값들을 제거해주면 답을 구할 수 있겠다 싶어서였다.

이후에는 간단하다, 하나씩 큰 사이즈의 투플을 확인하며 중복되는 값들은 버리고, 남은 값들을 정답 배열에 넣어주면 끝이다.

 

import java.util.*;
class Solution {
    public int[] solution(String s) {
        String[][] tupleSet = new String[s.split("},").length][1];
        String trimedInput = s.substring(1, s.length() - 1);

        String tmp = "";
        int leftIndex;
        String[] charStr = s.split("");
        int fromIndex = 0;
        for (int i = 0; i < charStr.length; i++) {
            String currChar = charStr[i];
            if(currChar.equals("{")) {
                fromIndex = i + 1;
            } else if (currChar.equals("}")) {
                String[] tupleElement = tmp.split(",");
                tupleSet[tupleElement.length - 1] = tupleElement;
                tmp = "";
                i++;
            } else {
                tmp += currChar;
            }
        }

        HashSet<String> dupFilter = new HashSet<String>();
        int[] answer = new int[tupleSet.length];
        for (int i = 0; i < answer.length; i++) {
            for (int j = 0; j < tupleSet[i].length; j++) {
                String currStr = tupleSet[i][j];
                if(!dupFilter.contains(currStr)) {
                    answer[i] = Integer.parseInt(currStr);
                    dupFilter.add(currStr);
                }

            }
        }
        return answer;
    }
}

 

 

 

 

반응형
Comments