문제
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.
교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.
입력
입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.
출력
출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다.
풀이
for문을 몇 개를 쓰는지 모르겠다... 시간이 되면 더 나아질 것을 기대하며!
이 문제에 대한 내 나름의 풀이 방법은
1. 1부터 30까지의 count배열과 출석한 28명의 학생이 들어간 answerArray배열, 그리고 빈 answer배열을 각각 선언한 다음
2. count배열과 answerArray배열을 비교하여 같은 값(출석한 학생)이 있을 경우 count 배열의 해당 순서의 값을 ""로 초기화하고
3. 마지막으로 count배열 내에 if문을 삽입하여 값이 ""가 아닌 값을 answer배열에 push하는 것이었다.
딱 봐도 번잡한 풀이다. 그러나 아직 더 쉬운 방법을 생각해내지는 못하겠다...
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let answerArray = new Array(30);
let count = [];
let answer = [];
for (let i = 1; i <= 30; i++) {
count.push(i);
}
for (let i = 0; i < input.length; i++) {
answerArray[i] = Number(input[i]);
}
for (let i = 0; i < 30; i++) {
for (let k = 0; k < 30; k++) {
if (answerArray[k] === count[i]) {
count[i] = "";
}
}
}
for (let i = 0; i < 30; i++) {
if (count[i] !== "") {
answer.push(count[i]);
}
}
for (let i = 0; i < answer.length; i++) {
console.log(answer[i]);
}'코딩테스트 공부 > node.js' 카테고리의 다른 글
| (백준)9086.문자열 (0) | 2024.01.18 |
|---|---|
| (백준) 10811. 바구니 뒤집기 (0) | 2024.01.18 |
| (백준)2562. 최댓값 (0) | 2024.01.18 |
| (백준)2439. 별 찍기 (0) | 2024.01.18 |
| (백준)25314. 코딩은 체육과목 입니다 (1) | 2024.01.18 |