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

[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; }