※ 알고리즘 코딩 테스트 문제의 입출력 형식
· 알고리즘 문제에서는 입출력 양식이 주어짐
→ 첫 번째 단계는 데이터를 입력받거나 생성하는 것
→ 적절한 알고리즘을 사용하여 정확한 형식으로 정답 출력
1. 최솟값, 최댓값 구하기
· N개의 정수가 주어질 때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
· ⓐ reduce 함수 ⓑ reduce 사용 않고 풀 때, 두 가지 프로그램 작성할 것
· 입력: 첫 번째 행에 정수의 개수 N과 (1 ≤ N ≤ 1,000,000)
두 번째 행에는 N개의 정수를 공백으로 구분해서 주어진다.
· 출력: 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
let fs = require('fs');
let input = fs.readFileSync('input_10.txt')
.toString().split('\n');
// 최대, 최소 구하기
//1. reduce 함수 이용
let count = Number(input[0]);
let data = input[1].split(' ').map(Number);
let reduceMaxNum = data.reduce((x,y)=> Math.max(x,y));
let reduceMinNum = data.reduce((x,y)=> Math.min(x,y));
console.log(reduceMinNum + ' ' + reduceMaxNum);
// 2. reduce 함수 사용하지 않고!
let maxNum = Number.MIN_VALUE;
let minNum = Number.MAX_VALUE;
for(let i=0; i<count; i++){
if(data[i] > maxNum) maxNum = data[i];
if(data[i] < minNum) minNum = data[i];
}
console.log(minNum + ' ' + maxNum);
|
cs |
2. 점수 평균 조작
· 세준이는 기말고사를 망쳐서 점수를 조작해서 집에 가져가기로 했다.
자기 점수 중에 최댓값을 골라서 모든 점수를 (점수/최댓값)*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학 점수가 50이었으면 수학 점수는 (50/70)*100 = 71.43점이 된다.
성적을 위의 방법대로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
· 입력: 첫 번째 행에 과목의 개수 N이,
두 번째 행에 현재 성적이 주어진다.
· 출력: 새로운 평균을 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
let fs = require('fs');
let input = fs.readFileSync('input_13.txt')
.toString().split('\n');
let data = input[1].split(' ').map(Number);
let totalScore = 0;
let max = Math.max(...data);
for(let i=0; i<data.length; i++){
totalScore += data[i];
}
let avgScore = ((totalScore/data.length)/max * 100).toFixed(2);
console.log(avgScore);
|
cs |
3. 숫자 뒤집기
· 상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893를 상수는 437과 398로 읽는다.
따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
· 입력: 첫 번째 행에 두 수 A와 B가 주어진다.
두 수는 같지 않은 세 자리 수이며, 0을 포함하지 않는다.
· 출력: 첫째 줄에 상수의 대답을 출력한다.
1
2
3
4
5
6
7
8
9
|
let fs = require('fs');
let input = fs.readFileSync('input_15.txt')
.toString().split('\n');
let data = input[0].toString().split(' ');
let x = data[0].split('').reverse().join('');
let y = data[1].split('').reverse().join('');
console.log(x > y ? x : y);
|
cs |
4. 주사위 문제
· 주사위 두 개를 36,000번 던져서 나오는 모든 경우의 수를 계산하는 프로그램을 작성하시오.
주사위 각각은 1부터 6까지의 정수값을 표시할 수 있으므로 합계는 2부터 12까지입니다.
· 입력 : 없음
· 출력: 사진과 유사하게 출력되도록 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//let dice = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// Array(개수).fill(지정 숫자로 채움)
let diceSum = new Array(11).fill(0);
let dice_1 = 0;
let dice_2 = 0;
let sum = 0;
let avg = 0;
for(let i=1; i<=36000; i++){
dice_1 = Math.floor((Math.random()*6)) + 1;
dice_2 = Math.floor((Math.random()*6)) + 1;
diceSum[dice_1+dice_2-2]++;}
console.log('Output : ');
for(let i=0; i<diceSum.length; i++){
console.log(`${i+2} : ${diceSum[i]} (${(diceSum[i]/36000).toFixed(6)})}`);
}
|
cs |
5. MBTI 테스트 페이지 제작_질문 페이지
1) 질문 페이지 생성 (question.html)
2) 해당 페이지에 적용할 css 파일 생성 (question.css)
3) 10가지의 질문마다 다른 질문을 보여주기 위해 html 문서에 데이터가 있는 js 파일 연동
· <script type="module" defer src="./js/question.js"></script>
· <script> 태그의 defer 속성: 페이지가 모두 로드된 후에 해당 스크립트를 실행하도록 명시
4) question.js 파일에서 data.js questions의 내용들만 가져와서 사용하기 위해 아래와 같이 코드 추가
· import {questions} from './data.js'
6. MBTI 테스트 페이지 제작_결과 페이지
1) 결과 페이지 생성 (result.html)
2) 해당 페이지에 적용할 css 파일 생성 (results.css)
3) 선택과 일치하는 결과를 보여주기 위해 html 문서에 데이터가 있는 js 파일 연동
· <script type="module" defer src="./js/results.js"></script>
4) results.js 파일에서 data.js results와 mbtis의 내용들만 가져와서 사용하기 위해 아래와 같이 코드 추가
· import {results, mbtis} from './data.js'
5) 강의 페이지 오류 방지를 위한 lecture.html 생성
'GSITM_하이미디어 > JavaScript&Jquery' 카테고리의 다른 글
코딩 테스트(JS)_정렬 (0) | 2024.08.19 |
---|---|
코딩 테스트(JS)와 MBTI 페이지 배포 (0) | 2024.08.16 |
코딩 테스트(JS)와 MBTI 페이지 제작 #1 (0) | 2024.08.13 |
JavaScript와 연습문제 (0) | 2024.08.09 |
JavaScript와 Html, CSS (0) | 2024.08.09 |