IF : 조건문 문제풀이(1)

IM SU KYUNG·2022년 3월 21일
0
post-thumbnail

JS 기초문법 / 알고리즘 자료구조를 배워가면서 코딩테스트 공부한다는건 여전히 어렵게 느껴지지만 백준 알고리즘(https://www.acmicpc.net/)를 통해 유형별로 문제 풀이를 연습하면서 자신감을 키우고 있는 중이다🔥
문제를 읽고 vcode에 직접 답을 입력하면서 JS 입력값에 대해 헷갈리지 않도록 노력중이다.🔥

1. 백준 알고리즘의 IF문 유형 문제 풀이

  • 두 수 비교하기
  • 시험 성적
  • 윤년
  • 사분면 고르기

🟡 두 수 비교하기

<문제> : 두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.
<입력> : 첫째 줄에 A와 B가 주어진다. A와 B는 공백 한 칸으로 구분되어져 있다.
<출력>
: A가 B보다 큰 경우에는 '>'를 출력한다.
: A가 B보다 작은 경우에는 '<'를 출력한다.
: A와 B가 같은 경우에는 '=='를 출력한다.

function solution(a, b){ 
    if (a > b){ 
        console.log(' > '); //만약 b보다 a가 클 경우 
    }
    else if (a < b){
        console.log(' < '); // 만약 a가 b보다 작을 경우 
    }
    else{
        console.log(' == '); // a와 b와 값이 같을 경우 
    }
    return solution;
}
a = [5];
b = [1];
console.log(solution(a, b));
=> output : >
a = [2];
b = [8];
console.log(solution(a, b));
=> output : <
a = [1];
b = [1];
console.log(solution(a, b));
=> output : ==

👉🏻 첫번째 문제는 가볍게 풀어볼 수 있었다. 두수를 비교하는 funsction solution(a, b)로 설정하여 문제 풀이를 할 수 있었다. 또한 if 조건문에는 무조건 조건이 들어가야 한다.


🟡 시험성적

<문제> : 시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.
<입력> : 첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
<출력> : 시험 성적을 출력한다.

(1) 첫번쨰 문제 풀이 방식 (오답 👉🏻 console.log()로 답을 찾을 때 계속 A아니면 F가 나옴)

unction solution(testScore){
    if (testScore = '90 ~ 100'){
        console.log('A')
    }
    else if (testScore = '80 ~ 89'){
        console.log('B')
    }
    else if (testScore = '70 ~ 79'){
        console.log('C')
    }
    else if (testScore = '60 ~ 69'){
        console.log('D')
    }else{
        console.log('F')
    }

(2) 다시 풀어본 문제 풀이식 (백준 알고리즘 제출 형식)
✔️ 꼭 다시 풀어볼것!

const fs=require('fs');
const input=fs.readFileSync('/dev/stdin').toString();
const score=parseInt(input);

if (score>=90){
    console.log('A');
}
else if (score>=80){
    console.log('B');
}
else if (score>=70){
    console.log('C');
}
else if (score>=60){
    console.log('D');
}
else{
    console.log('F');
}

=> (score>=점수)를 통해 각 점수에 대한 A, B, C, D, F를 알 수 있다.

🟡 윤년

<문제> : 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다.
1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

<입력> : 첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
<출력> : 첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
에제 입력 : 2000 / 1999
예제 출력 : 1 /0

function solution(a) {
    if (a % 400 == 0) return 1;
    if (a % 4 == 0 && a % 100 != 0) return 1; //% : 나누기, &&: 그리고, ! : 아닐경우 

    return 0;
}
console.log(solution(2000)); 
=>output : 1
console.log(solution(1999));
=> output : 0

🟡 사분면 고르기

✔️ 꼭 다시 풀어볼것!

<문제> :흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다.
예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.
점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.

<입력> : 첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0)
<출력> : 점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.

에제 입력 : 12, 5
예제 출력 : 1

에제 입력 : 9, -13
예제 출력 : 4

🚩 이러한 문제는 어떻게 접근해야 하는 걸까 = 접근하기 어려우면 멘붕오는 타입
결과 값은 사분면 번호 1, 2, 3, 4 중 하나 출력
조건은 Q1 (x 값이 양수, y 값이 양수), Q2(x 값이 음수, y 값이 양수),
Q3(x 값이 음수, y 값이 음수), Q4(x 값이 양수, y 값이 음수)

👉 if 문을 통해 어떻게 풀이를 해야 할지 몰라서 검색을 통해 찾기 시작했다.

const x = Number(input[0]);
const y = Number(input[1]);

    if (x > 0 && y > 0) {
        console.log(1);
    } else if (x < 0 && y > 0) {
        console.log(2);
    } else if (x < 0 && y < 0) {
        console.log(3);
    } else if (x > 0 && y < 0) {
        console.log(4);
    }

🕵️‍♂️ if 문을 통해 문제를 잘 풀 수 있을 것이라 생각했는데 직접 문제를 풀이하고 어려우면 답을 찾아가는 과정을 통해 이해를 해보니 if문에 대해 더 자세히 알아보고 풀이할 수 있는 능력을 길러야겠다 라는 생각이 들었다.
JavaScript 자바스크립트의 기본 문법이해와 알고리즘, 자료구조 모두 반복 학습을 통해 익숙해지고 관련 유형들의 문제들을 더 많이 풀어 보고 싶다.

profile
Front-end web developer🌳

0개의 댓글