개발 일지
953. Verifying an Alien Dictionary (외계인 사전 검증하기) 본문
외계어에서는 놀랍게도 영어 소문자도 사용하지만 order가 다를 수 있습니다. 알파벳의 order는 소문자의 순열입니다.
외계어로 쓰여진 일련의 words와 알파벳의 order가 주어지면 주어진 words가 이 외계 언어에서 알파벳의 order로 정렬된 경우에만 true를 반환합니다.
예시 1:
입력: words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
출력: true
설명: 이 언어에서는 'h'가 'l'앞에 오므로 정렬된 순서입니다.
예시 2:
입력: words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz"
출력: false
설명: 이 언어에서는 'd'가 'l' 다음에 오므로 words[0] > words[1]이므로 정렬되지 않은 순서입니다.
예시 3:
입력: words = ["apple","app"], order = "abcdefghijklmnopqrstuvwxyz"
출력: false
설명: 처음 세 문자 "app"이 일치하고 두 번째 문자열은 짧습니다. (크기) 사전식 규칙에 따르면 "apple" > "app"입니다. 'l' > '∅'이기
때문에 '∅'는 다른 문자보다 작은 문자 공백으로 정의됩니다. (추가정보)
조건:
- 1 <= words.length <= 100
- 1 <= words[i].length <= 20
- order.length == 26
- words[i]와 order안의 모든 문자들은 영소문자입니다.
정답:
public class Solution {
public bool IsAlienSorted(string[] words, string order) {
for (int i = 0; i < words.Length - 1; i++)
{
if (!inorder(words[i], words[i + 1], order))
{
return false;
}
}
return true;
}
private bool Inorder(String s1, String s2, string order)
{
for (int i = 0; i < s1.Length && i < s2.Length; i++)
{
int index1 = order.IndexOf(s1[i]);
int index2 = order.IndexOf(s2[i]);
if (index1 < index2)
{
return true;
}
else if (index1 > index2)
{
return false;
}
}
return s1.Length <= s2.Length;
}
}
해설:
Inorder 함수에 두 string값을 넣고 i번째 숫자가 order 값에서 몇 번째에 있는지 찾은 후 index값이 s1이 작으면 true, s2가 작으면 false를 리턴해주었습니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
14. Longest Common Prefix (가장 긴 공통 접두사) (0) | 2023.03.20 |
---|---|
13. Roman to Integer (로마에서 정수로) (0) | 2023.02.28 |
1480. Running Sum of 1d Array (누적합) (0) | 2023.02.27 |
1470. Shuffle the Array (배열 섞기) (0) | 2023.02.27 |
926. Flip String to Monotone Increasing (문자열을 뒤집어서 모노톤 증가시키기) (2) | 2023.02.06 |