📌 문제 링크
https://www.acmicpc.net/problem/2204
📌 문제 탐색하기
- 영어 단어가 있을 때 각 줄에 각 테스트케이스에서 대소문자를 구분하지 않고 사전 상 가장 앞서는 단어를 출력한다.
시간복잡도
- O(nlogn)
알고리즘 선택
- 정렬
📌 코드 설계하기
- 문제의 `input`을 개행으로 분리하여 가져옵니다.
- 인덱스를 표현할 `index`를 초기화해줍니다.
- `input`의 길이 만큼 반복문을 돌게 합니다.
- `input`에 있는 문자열 숫자를 인덱스에 따라 숫자로 변환해 줍니다.
- 숫자가 `0`이라면 반복문을 멈춥니다.
- 각 테스트케이스 별로 단어들의 길이를 `slice()`하여 새로운 배열 `words`을 만듭니다.
- `words`를 사전순으로 정렬합니다.
- 가장 앞서있는 단어를 출력합니다.
- `index`에 `숫자 + 1`을 더하여 다음 테스트 케이스로 이동합니다.
📌 정답 코드
//https://www.acmicpc.net/problem/2204
export {};
const fs = require('fs');
const filePath =
process.platform === 'linux' ? '/dev/stdin' : __dirname + '/input1.txt';
const input = fs.readFileSync(filePath).toString().trim().split('\n');
let index = 0;
while (index < input.length) {
const t = parseInt(input[index], 10);
if (t === 0) break;
const words = input.slice(index + 1, index + 1 + t);
const result = words.reduce((smallest: string, current: string) =>
current.toLowerCase().localeCompare(smallest.toLowerCase()) < 0
? current
: smallest
);
console.log(result);
index += t + 1;
}
'코딩 > 알고리즘' 카테고리의 다른 글
백준) 2303 - 숫자게임 JS (0) | 2024.10.25 |
---|---|
백준) 5567 - 결혼식 JS (0) | 2024.10.24 |
백준) 2644 - 촌수계산 JS (0) | 2024.10.22 |
백준) 11724 - 연결 요소의 개수 JS (0) | 2024.10.21 |
백준) 17204 - 죽음의 게임 (3) | 2024.10.20 |