본문 바로가기
알고리즘 문제/Hackerrank

[hackerrank] Grid Challenge

by 햄과함께 2020. 2. 22.
320x100

문제 : https://www.hackerrank.com/challenges/grid-challenge/problem


NxM 배열이 주어지면 각 열이 사전 순 배열이 될 수 있는지 판단하는 문제.

같은 행에 있는 문자들은 순서를 변경할 수 있다.


각 열을 사전순으로 배열한 후 같은 행에 있는 문자들이 사전순으로 정렬되어 있는지 판단하면 된다.

각 열을 사전순으로 배열한다면

a1 a2 a3 a4
b1 b2 b3 b4
c1 c2 c3 c4
d1 d2 d3 d4

a1 < a2 < a3 < a4

b1 < b2 < b3 < b4

c1 < c2 < c3 < c4

d1 < d2 < d3 < d4

가 된다.

 

만약 a2 > b2여서 2번째 열이 사전순 배열이 안되어 a2보다 작은 a1을 a2대신 사용한다고 하더라도 

b1 < b2

a1 < a2

a2 > b2

이기 때문에 a2 > b1가 된다.

즉, 2번째 열을 사전순 배열을 맞추기 위해 1번째 열의 사전순 배열을 망칠수도 있다.

 

따라서 각 행들을 사전순배열을 한 뒤, 각 열들을 사전 순 배열을 확인했을 때 하나라도 사전순 배열이 되지 않는다면 "NO', 모두 사전순 배열이라면 "YES"를 출력한다.

 

시간복잡도는 N개의 M사이즈 배열을 오름차순 배열하기 때문에 O(N x MlogM).


소스코드 : https://github.com/fpdjsns/Algorithm/blob/master/hackerrank/easy/Grid%20Challenge.cpp

320x100

'알고리즘 문제 > Hackerrank' 카테고리의 다른 글

[hackerrank] Sherlock and Anagrams  (0) 2020.02.16
[hackerrank] Largest Pyramid  (0) 2020.02.15

댓글