코딩테스트/HackerRank

[HackerRank] Grid Challenge 📌

주니어주니 2023. 4. 7. 00:51

 

문제 

 

왜자꾸 중국어로 나오는건지 모르겠지만 

암튼

입력받은 배열에 대해서 배열을 각 행마다, 각 열마다 정렬이 되면 YES, 안되면 NO를 출력하라는 것 같다

 

 

 

 

내 풀이

 

진짜 고민 많이 하고....

문자열 정렬하는거(Char배열로 만들어서 정렬)는 구글의 도움을 받았지만

그래도 한 80%는 스스로 풀어서 쫌 뿌듯하다 ㅠ

 

근데 일단 이건 틀렸다. 원래는 이렇게 풀었음

테스트코드 몇개는 통과하는데 몇개에서 틀림

 

public static String gridChallenge(List<String> grid) {

    // 배열의 각 요소(문자열) 정렬
    for(int i=0; i < grid.size(); i++) {
        String str = grid.get(i);           // "ebacd"
        char[] cArr = str.toCharArray();    // [ebacd]
        Arrays.sort(cArr);                  // [abcde]
        str = new String(cArr);             // "abcde"
    }

    // 각 열의 크기 정렬
    for(int i=0; i < grid.size(); i++) {
        for(int j=0; j < grid.size(); j++) {
            if(!(grid.get(j).charAt(i) < grid.get(j + 1).charAt(i))) {
                return "NO";
            }
        }
    }

    return "YES";
}

 

 

수정

 

+) grid에 다시 담는 것

+) 두번째 for문에서 각 열에서 루프를 돌때 grid 길이만큼이 아니라, 첫번째 행의 열의 길이만큼 

+) 세번째 for문에서 grid.size() 까지 돌면, grid.get( j + 1 )( = j번째 행 + 1)을 할 때 grid.size()를 넘어가버림 

+) 같은 열의 이전 행의 값이 더 작지 않을 때 ( ! < ) 이런식으로 했었던 걸 -> 더 크면 NO 반환 으로 수정

 

 

    public static String gridChallenge(List<String> grid) {
        
        // 배열의 각 요소(문자열) 정렬
        for(int i=0; i < grid.size(); i++) {
            String str = grid.get(i);           // "ebacd"
            char[] cArr = str.toCharArray();    // [ebacd]
            Arrays.sort(cArr);                  // [abcde]
            str = new String(cArr);             // "abcde"
            grid.set(i, str);			// grid에 다시 담아줌
        }
        
        // 각 열의 크기 정렬
        for(int i=0; i < grid.get(0).length(); i++) {			// 첫 행의 열의 길이만큼
            for(int j=0; j < grid.size() - 1; j++) {			
                if(grid.get(j).charAt(i) > grid.get(j + 1).charAt(i)) {	// 같은 열의 이전 행의 값이 더 크면
                    return "NO";
                }
            }
        }
        
        return "YES";
    }

 

 

 

 

다른 사람 풀이 

 

 

아 아예 빈 문자열을 만들어놓고 그 문자열과 비교를 해도 되겠구만 ............

 

 

 

https://ifuwanna.tistory.com/465

 

[HackerLank] Grid Challenge - 문제풀이

Description 각 Row의 요소들을 정렬했을 경우 같은 행(Column)의 첫번째행부터 마지막행까지의 값도 오름차순으로 정렬되어있는지 여부를 반환하는 문제입니다. Solution 1. Sorting public static String gridChal

ifuwanna.tistory.com

 

 

 

 

'코딩테스트 > HackerRank' 카테고리의 다른 글

[HackerRank] Recursive Digit Sum 📌  (0) 2023.04.07
[HackerRank] Sherlock and Array 📌  (0) 2023.04.07
[HackerRank] Max Min 📌  (0) 2023.04.06
[HackerRank] Caesar Cipher 📌  (0) 2023.04.06
[HackerRank] Sales by Match ✔📌  (0) 2023.04.05