자료구조와 알고리즘/문제풀이

[Baekjoon] 단계별로 풀어보기 : 조건문

순정법사 2023.08.16

 

 

이번 알고리즘 문제 풀이는 C로 진행했습니다 

코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요!

 

 

 


 

 

 

A. 조건문

 

조건문 단계

점이 어느 사분면에 있는지 알아내는 문제

www.acmicpc.net

 

1. 두 수 비교하기

a. 문제지  : 1330

 

b. 정답

📚 풀이

#include <stdio.h>

int main(){
    int A, B;
    scanf("%d %d", &A, &B);
    
    if(A>B){
        printf(">\n");
    }else if(A<B){
        printf("<\n");
    }else{
        printf("==\n");
    }
    
    return 0;
}

 

 

2. 시험 성적

a. 문제지  : 9498

 

b. 정답

📚 풀이

#include <stdio.h>

int main() {
    int score; 
    scanf("%d", &score);  
    
    if (score >= 90 && score <= 100) {
        printf("A\n"); 
    } else if (score >= 80) {
        printf("B\n");  
    } else if (score >= 70) {
        printf("C\n"); 
    } else if (score >= 60) {
        printf("D\n");
    } else {
        printf("F\n");  
    }
    
    return 0;
}

 

 

3. 윤년

a. 문제지  : 2753

 

b. 정답

📚 풀이

#include <stdio.h>

int main() {
    int year;
    scanf("%d", &year);
    
    if (year % 400 == 0) {
        printf("1\n");
    } else if ((year % 4 == 0) && (year % 100 != 0)) {
        printf("1\n");
    } else {
        printf("0\n");
    }
    
    return 0;
}

 

 

4. 사분면 고르기

a. 문제지  : 14681

 

b. 정답

📚 풀이

#include <stdio.h>

int main() {
    int A, B;
    
    scanf("%d %d", &A, &B);
    
    if (A > 0 && B > 0) {
        printf("1\n");
    } else if (A < 0 && B > 0) {
        printf("2\n");
    } else if (A < 0 && B < 0) {
        printf("3\n");
    } else {
        printf("4\n");
    }

    return 0;
}

 

 

5. 알람 시계

a. 문제지  : 2884

 

b. 정답

📚 풀이

#include <stdio.h>

int main(){
    int hour, min;
    scanf("%d %d", &hour, &min);
    
    if(min<45){
        if(hour==0){
            hour=23;   
        }else{
            hour--;
        }
        min += 15;
    }else{
        min -= 45;
    }
    
    printf("%d %d", hour, min);
}

 

 

6. 오븐 시계

a. 문제지  : 2525

 

b. 정답

📚 풀이

#include <stdio.h>

int main() {
    int hour, min, cook;
    scanf("%d %d %d", &hour, &min, &cook);

    min += cook;

    if (min >= 60) {
        hour += min / 60;
        min %= 60;

        if (hour >= 24) {
            hour %= 24;
        }
    }

    printf("%d %d\n", hour, min);

    return 0;
}

 

 

7. 주사위 세개

a. 문제지  : 2480

 

b.  알고리즘

  1. 세 개의 주사위 눈을 입력받음
  2. 초기화된 prize 변수를 이용하여 상금을 저장할 공간 생성
  3. 첫 번째 조건문: 모두 같은 눈이 나오는 경우
    주사위의 눈이 모두 같은지 비교
    만약 모두 같은 눈이라면, 상금을 계산하여 prize에 저장
  4. 두 번째 조건문: 두 개의 눈이 같은 경우
    주사위의 눈 중에서 두 개의 눈이 같은지를 하나씩 비교
    같은 눈을 찾으면, 해당 눈을 same_dice 변수에 저장하고 상금을 계산하여 prize에 저장
  5. 세 번째 조건문: 모두 다른 눈이 나오는 경우
    세 개의 주사위 눈 중에서 가장 큰 값을 저장(max_dice 변수)
  6. 최종적으로 계산된 상금인 prize를 출력
  7. 프로그램 종료

 

c. 정답

📚 풀이

#include <stdio.h>

int main() {
    int dice1, dice2, dice3;
    scanf("%d %d %d", &dice1, &dice2, &dice3);  // 세 개의 주사위 눈을 입력 받음

    int prize = 0;  // 계산된 상금을 저장할 변수 초기화

    // 모두 같은 눈이 나오는 경우
    if (dice1 == dice2 && dice2 == dice3) {
        prize = 10000 + dice1 * 1000;  // 상금 계산
    }
    // 두 개의 눈이 같은 경우
    else if (dice1 == dice2 || dice1 == dice3 || dice2 == dice3) {
        int same_dice;
        if (dice1 == dice2) {
            same_dice = dice1;  // 같은 눈을 저장
        } else if (dice1 == dice3) {
            same_dice = dice1;  // 같은 눈을 저장
        } else {
            same_dice = dice2;  // 같은 눈을 저장
        }
        prize = 1000 + same_dice * 100;  // 상금 계산
    }
    // 모두 다른 눈이 나오는 경우
    else {
        int max_dice = (dice1 > dice2) ? dice1 : dice2;  // 두 주사위 중 큰 값을 선택
        max_dice = (max_dice > dice3) ? max_dice : dice3;  // 큰 값과 세 번째 주사위 값을 비교해서 최대값 선택
        prize = max_dice * 100;  // 상금 계산
    }

    printf("%d\n", prize);  // 계산된 상금 출력

    return 0;
}