본문 바로가기

GSITM_하이미디어/JavaScript&Jquery

코딩 테스트(JS)와 MBTI 페이지 제작 #1

※ 알고리즘 코딩 테스트 문제의 입출력 형식

· 알고리즘 문제에서는 입출력 양식이 주어짐
→ 첫 번째 단계는 데이터를 입력받거나 생성하는 것
→ 적절한 알고리즘을 사용하여 정확한 형식으로 정답 출력

 

※ 파일시스템 모듈의 사용

· 아래와 같이 txt, js 파일이 한 짝을 이루도록 생성한 후코딩 테스트 연습을 진행할 것

· txt 파일의 내용을 읽어오기 위해서는 파일시스템(fs 모듈)을 활용!

 

 

1. 두 정수 A와 B를 입력받아, A+B를 출력하시오.

· 입력: 7 9 / 출력: 16

 

1
2
3
4
5
6
7
// file system
let fs = require('fs');
let input = fs.readFileSync('input_01.txt')
            .toString().split('\n');
   
let data = input[0].split(' ').map(Number);
console.log(data.reduce((x,y) => x+y));
cs

 

2. 두 정수 A와 B를 입력받아, 두 수 A와 B 사이의 모든 정수값을 더해 출력하시오.

· 입력: 7 2 / 출력: 27

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let fs = require('fs');
let input = fs.readFileSync('input_02.txt')
            .toString().split('\n');
 
let [startNum, endNum] = input[0].split(' ').map(Number);
// 누적할 변수
let sum = 0;
 
if(startNum > endNum){
    let temp = startNum;
    startNum = endNum;
    endNum = temp;
}
 
for(let i=startNum; i<=endNum; i++){
    sum += i;
}
 
console.log(sum);
cs

 

3. 곱셈 문제

· (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
· 첫 번째 행에 (1), 두 번째 행에 (2)의 값을 입력받아, (3)~(6)의 값을 순서대로 출력한다.

 

  

                     4 7 2   ---- (1)               
                  × 3 8 5   ---- (2)
             --------------- 
                   2 3 6 0   ---- (3)
                3 7 7 6      ---- (4)
         +  1 4 1 6         ---- (5)
            ---------------
            1 8 1 7 2 0    ---- (6)

 

1
2
3
4
5
6
7
8
9
10
11
12
let fs = require('fs');
let input = fs.readFileSync('input_03.txt')
            .toString().split('\n');
 
let firstNum = Number(input[0]);
let lastNum = input[1].split('').map(Number);
 
for(let i=lastNum.length-1; i>=0; i--){
    console.log(firstNum*lastNum[i]);
}
 
console.log(firstNum * Number(input[1]));
cs

 

4. 알람 시계 문제

· 상근이는 매일 아침 알람을 듣고 일어난다. 바로 일어나면 다행이지만 항상 조금 더 자려는 마음 때문에 학교를 지각한다.
  앞으로 지각을 하지 않기 위해 원래 설정되어 있는 알람을 45분 앞서는 시간으로 변경하려고 한다.
  설정한 알람 시각이 주어졌을 때, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.

 

 

 

 

 

· 입력: 알람 시간 H시 M분을 의미하는 두 정수가 주어진다 (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 
· 출력: console.log(hour + ' ' + minute)을 사용하시오.

 

 

 

 

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
let fs = require('fs');
let input = fs.readFileSync('input_05.txt')
            .toString().split('\n');
 
let data = [];
let hour = 0;
let minute = 0;
 
for(let i=0; i<input.length; i++){
    data = input[i].split(' ').map(Number);
 
    hour = data[0];
    minute = data[1- 45;
 
    if(minute < 0){
        hour = hour - 1;
        if(hour < 0){
            hour = 23;
        }
        minute += 60;
    }
    console.log(hour + ' ' + minute);
}
cs

 

5. 오븐 시계

· 오븐을 이용하여 훈제오리구이를 만들려고 한다. 이때 요리를 시작하는 시각과

  오븐구이를 하는 데 필요한 시간이 분 단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.

· 입력:  첫 번째 행에 현재 시각인 A와 분을 의미하는 B, 두 정수가 주어지고 (0 ≤ A ≤ 23, 0 ≤ B ≤ 59),

  두 번째 행에는 요리하는 데 필요한 시간 C가 분 단위로 주어진다. (0 ≤ C ≤ 1,000)

· 출력: 종료되는 시각의 시와 분을 출력 (단, 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
let fs = require('fs');
let input = fs.readFileSync('input_06.txt')
            .toString().split('\n');
 
let [hour, minute] = input[0].split(' ').map(Number);
 
let cookTime = Number(input[1]);
let totalTime = (hour*60+ minute + cookTime;
 
hour = parseInt(totalTime / 60) % 24;
minute = totalTime % 60;
console.log(hour + ' ' + minute);
cs

 

6. 최댓값과 인덱스 찾기

· 9개의 서로 다른 자연수가 주어질 때, 그 중 최댓값을 찾고, 몇 번째 수인지 구하는 프로그램을 작성하시오.

 

 

 

 

 

 

 

 

· 입력: 첫 번째 행부터 아홉 번째 행까지 순서대로 자연수가 주어진다. ( n < 100)
· 출력: 첫 번째 행에 최댓값을 출력하고, 두 번째 행에 최댓값이 몇 번째 수인지 출력한다.

 

 

 

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
let fs = require('fs');
let input = fs.readFileSync('input_11.txt')
            .toString().split('\n').map(Number);
 
let maxNum = Number.MIN_VALUE;
let maxIndex = 0;      
 
// 1. 함수 이용하지 않은 방법
for(let i=0; i<input.length; i++){
    if(maxNum < input[i]){
        maxNum = input[i];
        maxIndex = i+1;
    }
}
console.log(maxNum);
console.log(maxIndex);
 
// 2. 함수 활용한 방법
maxNum = Math.max(...input);
maxIndex = input.indexOf(maxNum) + 1;
 
console.log(maxNum);
console.log(maxIndex);
cs

 

7. MBTI 테스트 페이지 제작_메인 페이지

· 강사님 github 접속 → 이미지 등 기본적으로 필요한 파일 다운 → VS Code 경로에 mbti 폴더 생성 후 파일 압축 풀기

  → index.html 생성

1) browser마다 css가 다르게 보이기 때문에, 통일성 있게 맞추기 위해 아래와 같이 설정

· 구글 검색: reset-css CDN by jsDelivr  - A CDN for npm and GitHub → Copy HTML 복사 → index.html에 붙여넣기

2) 폰트 설정하기 위해 아래와 같이 설정

· 구글 검색: pretendard github → 가변 다이나믹 서브셋 → HTML 복사 → index.html에 붙여넣기

3) 공통적으로 CSS 적용하기 위한 common.css 파일 생성 적용하기 위해서는 아래와 같이 코드 작성 필요

· <link rel="stylesheet" href="./css/common.css">

4) 해당 페이지만 별도로 CSS 적용하기 위한 home.css 파일 생성 → 적용하기 위해서는 아래와 같이 코드 작성 필요
· <link rel="stylesheet" href="./css/home.css">

 

※ index.html css 적용 전후