본문 바로가기
개인공부/패스트캠퍼스 알고리즘

1강-4. 조건문 문제풀이

by 뭉지야 2023. 6. 29.
728x90

< 시험성적 >

https://www.acmicpc.net/problem/9498

 

9498번: 시험 성적

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

# 정답 예시

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

data = Number(input[0]);

function check(a) {
  if(90 <= a && a <= 100) console.log('A');
  else if(80 <= a && a <= 89) console.log('B');
  else if(70 <= a && a <= 79) console.log('C');
  else if(60 <= a && a <= 69) console.log('D');
  else console.log('F');
}
check(data);

< 알람시계 >

https://www.acmicpc.net/problem/2884

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net

# 내가 푼코드

//45분 일찍 알람설정하기 

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

//M이 45보다 크면 h는 그대로 이고 M-45
//M이 45보다 작으면 H는 h-1이고 M은 45-m
//h가 0이면 h는 23되고 m은 45-m이다

let a = Number(input[0].split(' ')[0]);
let b = Number(input[0].split(' ')[1]);

function check(h, m){
    if (m >= 45) console.log(h, m-45);
    if (m < 45) {
        else if (h=0) {
            console.log(23, 45-m);
        } else {
            console.log(h-1, 45-m);
        }
    }
    check(h,m);
}

 # 포인트

-현재 시각이 주어졌을때, 45분을 감소시킨다.

-0분보다 작아지면 시(hour)가 1시간 감소한다.

-0시보다 작아지면 시(hour)가 23시로 초기화된다.

 

# 정답 예시

//45분 일찍 알람설정하기 

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

//M이 45보다 크면 h는 그대로 이고 M-45
//M이 45보다 작으면 H는 h-1이고 M은 45-m
//h가 0이면 h는 23되고 m은 45-m이다

let hour = Number(input[0].split(' ')[0]);
let minute = Number(input[0].split(' ')[1]);

if (minute < 45) {
    hour -= 1;
    minute += 15;
    if(hour < 0) hour = 23;
}
else minute -= 45;

console.log(hour + " "+ minute);

< 오븐 시계 >

https://www.acmicpc.net/problem/2525

 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

# 내가 푼 코드

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

//끝나는 시간을 분단위로 자동적으로 계산한다
//시작하는 시간과 구이에 필요한시간
//구이끝나는 시각을 계산해라 

let hour = Number(input[0].split(' ')[0]);  //현재시간
let minute = Number(input[0].split(' ')[1]); //현재시간
let need = Number(input[1].split(' ')[0]); // 요리하는데 필요한 시간

//minute + need >= 60 이면 hour+1  근데 hour가 23이면 hour는 0이된다.
//minute + need < 60 이면 hour는 그대로 


if(minute + need >= 60) {
    hour +=1;
    minute = minute + need - 60;
    if (hour=23) hour = 0;
}
else minute = minute + need;

console.log(hour + " "+ minute);

# 포인트

-입력: A시 B분

-걸리는 시간: C분

[문제 해결 방법]

1. 입력으로 주어진 시각을 "분"의 형태로 바꾸기

2. "분"이 주어졌을때, 시각을 알려주는 기능을 작성하기

[예시]

-입력: (17시 40분 + 80분) = (1060분+80분) = 1140분

1. 1140를 1440으로 나눈 나머지를 취하기: 1140분(하루는 1440분이니까)

2. 이때, 60으로 나눈 몫을 시(hour)로 취하기: 19시

3. 이때, 60으로 나눈 나머지를 분(minute)으로 취하기: 0분

 

#정답 예시

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let [a, b] = input[0].split(' ').map(Number);
let c = Number(input[1]);

let totalMinute = a * 60 + b + c;  //분의 형태로 바꾸기
totalMinute %= 1440;
let hour = parseInt(totalMinute / 60);
let minute = totalMinute % 60;

console.log(hour + " " + minute);

< 주사위 세개 >

https://www.acmicpc.net/problem/2480

 

2480번: 주사위 세개

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.  같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.  같은 눈이 2개

www.acmicpc.net

 

#정답예시

//fs모듈을 이용해 파일 전체를 읽어와 문자열로 저장하기
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let a = Number(input[0].split(' ')[0]);
let b = Number(input[0].split(' ')[1]);
let c = Number(input[0].split(' ')[2]);

//세 개의 수가 모두 같은 경우
if(a === b && b === c) console.log(10000 + a*1000);
// 세 개의 수가 전부 같지는 않지만, 두 개의 수가 같은 경우
else if( a === b) console.log(1000 + a*100);
else if( a === c) console.log(1000 + a*100);
else if( b === c) console.log(1000 + b*100);
// 세 개의 수가 전부 다른 경우
else console.log(Math.max(a, b, c) * 100);

 

728x90