일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 딥러닝
- 중학수학
- CSS
- 중학1-1
- numpy/pandas
- 정보처리기사필기
- 연습문제
- 데이터분석
- 혼공머신
- 파이썬라이브러리
- 데이터입출력구현
- 컴퓨터구조
- pandas
- C++
- 자바
- JSP/Servlet
- 데이터베이스
- 파이썬
- 영어공부
- 텍스트마이닝
- 정보처리기사실기
- 컴퓨터비전
- 머신러닝
- 자바 실습
- CNN
- html/css
- 코딩테스트
- SQL
- 정수와유리수
- 운영체제
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
조건문 응용 1 - if~else, switch문을 사용해 조건에 맞는 결과값 출력하기 본문
조건문 응용 1 - if~else, switch문을 사용해 조건에 맞는 결과값 출력하기
huenuri 2024. 8. 24. 22:12오늘 소수를 판별하는 문제를 풀려고 했으나 별 찍기 문제를 푸는데 시간이 많이 걸렸다. 남은 아침 시간에 지난번에 풀었던 문제들을 한번 더 복습하는 시간을 갖기로 했다.
반복문부터 학습한 것들을 정리했으나 조건문도 어려운 문제들이 많아 이것들도 정리해보려고 한다.
이 문제는 코드업에서 가져왔다.
아르바이트 가는 날 <1160번>
🌹 문제 1번
철수는 정수 두 개를 입력하면 두 수 사이의 기본 연산이 자동으로 이루어지는 프로그램을 제작하고 싶다.
기본 연산이란, 더하기, 빼기, 곱하기, 나누기, 나머지 연산 등 5가지 연산을 말한다.
두 정수의 기본 연산을 출력하는 정수 계산기를 제작하시오.
#include <stdio.h>
int main(void)
{
int day;
scanf_s("%d", &day);
switch (day)
{
case 1:
case 3:
case 5:
case 7:
printf("oh my god\n");
break;
case 2:
case 4:
case 6:
printf("enjoy\n");
break;
}
return 0;
}
이 문제는 switch문을 활용하면 쉽게 풀 수 있다. switch는 if문과 조금 다른데, 비슷한 유형의 조건들이 반복될 경우 사용하는 것 같다.
보통 정수로 식을 나누어서 구분할 때 사용된다. 달수나 날짜 계산 같은 것들..
홀수와 짝수 그리고 더하기 <1161번>
🌹 문제 2번
정수 두개가 입력으로 들어온다.
만약 첫번째 정수가 홀수이면 "홀수"를 출력하고, 짝수이면 "짝수"를 출력한 후 "+"를 출력한다.
그리고 두번째 정수가 홀수이면 "홀수"를 출력하고, 짝수이면 "짝수"를 출력한 후 "="을 출력하고 결과로 나오는 값이 홀수인지 짝수인지 출력한다.
예를들어, 5 7 이 입력되면 "홀수+홀수=짝수"가 출력된다. 5 6 이 입력되면 "홀수+짝수=홀수"가 출력된다.
#include <stdio.h>
int main(void)
{
int num1, num2;
scanf_s("%d%d", &num1, &num2);
if (num1 % 2 == 1)
{
printf("홀수+");
if (num2 % 2 == 1)
{
printf("홀수=");
}
else
printf("짝수=");
}
else
{
printf("짝수+");
if (num2 % 2 == 1)
{
printf("홀수=");
}
else
printf("짝수=");
}
if ((num1 + num2) % 2 == 1)
{
printf("홀수");
}
else
printf("짝수");
return 0;
}
2번 문제는 짝수와 홀수를 더한 값을 알아보는 건데, 첫번째 수와 두번째 수를 2로 나누어서 그 수가 홀수인지 짝수인지 먼저 알아보면 된다.
그리고 이 결과값도 홀수인지 짝수인지 구별하기 위해 if문을 하나 더 사용한다.
처음에는 if를 짝수와 홀수 구별하는 문장에 중첩되게 사용하기도 했었다.
이 문제는 중요하니 다음에 한번 더 풀어봐야겠다.
당신의 사주를 봐 드립니다 1 <1162번>
🌹 문제 3번
태어난 해, 월, 일을 입력받아 사주팔자를 보는 프로그램을 작성하시오.
<사주를 보는 방법>
세 수(년,월,일)가 주어지면, (년 - 월 + 일)에 마지막 숫자가 0이면 "대박"을 출력, 그렇지 않으면 "그럭저럭"을 출력하세요.
#include <stdio.h>
int main(void)
{
int year, month, day;
scanf_s("%d%d%d", &year, &month, &day);
if ((year - month + day) % 10 == 0)
{
printf("대박");
}
else
printf("그럭저럭");
return 0;
}
3번 문제는 식만 잘 쓰면 어렵지 않게 풀 수 있었다. 가끔씩 입력할 때 %d의 개수를 생략해서 실수를 할 때가 있다.
당신의 사주를 봐 드립니다 2 <1163번>
🌹 문제 3
태어난 해, 월, 일을 입력받아 사주팔자를 보는 프로그램을 작성하시오.
<사주를 보는 방법>
세 수(년,월,일)가 주어지면, (년 + 월 + 일)에 100의 자리 숫자가 짝수이면 "대박"을 출력, 그렇지 않으면 "그럭저럭"을 출력하세요.
#include <stdio.h>
int main(void)
{
int year, month, day;
scanf_s("%d%d%d", &year, &month, &day);
int luck;
luck = (((year + month + day) % 1000) / 100) % 2 == 0;
if (luck)
{
printf("대박");
}
else
printf("그럭저럭");
return 0;
}
3번 문제는 2번보다는 조금 어려웠다. 지금은 잘할 수 있게 되었지만 지난주까지만 해도 난 자릿수를 구별하는 문제에서 어려움을 느꼈다.
나머지와 몫 연산을 사용해서 1, 10, 100 등의 자릿수를 출력하는 문제를 앞으로도 계속 연습해볼 것이다.
윤년 판별 <1166번>
🌹 문제 4번
2월이 29일까지 있는 해를 윤년이라고 한다. 한 자연수를 입력받아서 윤년인지 아닌지를 판단하는 프로그램을 작성하시오. 단, 윤년은 다음 두 조건 중 하나만 만족하면 된다.
(1) 400의 배수이면 무조건 윤년이다.
(2) 4의 배수이며, 100의 배수가 아니면 윤년이다.
#include <stdio.h>
int main(void)
{
int year;
scanf_s("%d", &year);
if ((year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0))
{
printf("Leap");
}
else
printf("Normal");
return 0;
}
윤년을 판별하는 문제도 처음에는 정말 어려웠는데 지금은 아주 쉽게 할 수 있다.
이 문제에서 주의할 점은 어떤 경우에 ||을 사용하고 &&을 사용하는지이다.
오늘의 코딩 학습을 마치고
그동안은 문제만 풀었지 문제에 대해서 스스로 설명해보거나 글로 써본 적이 없었다. 근데 이렇게 해보니 확실히 기억이 잘되고 어떤 부분을 알고 이해가 안되는지 알게 되는 것 같았다.
알고 있다고 생각했던 문제도 설명을 해보면 진짜 아는 게 아닐 경우가 많았다.
앞으로도 이렇게 배운 것들을 스스로 설명할 수 있는 수준이 될때까지 학습해볼 것이다.
주말에는 이런 식의 코딩 공부가 아닌 더욱 재미있는 프로그래밍의 세계가 있는지 찾아보고 싶다.
난 싫증을 잘 느끼니 한 가지 방식을 오래하면 지루해서 더이상 진행하기 힘들어진다.
그리고 한번 어떤 일을 하다가 중단하면 모든 기록을 삭제하는 경우가 굉장히 많았다. 내가 살면서 쓴 글은 정말 많지만, 남아있는 것들은 거의 없다. 아마도 완전무결함을 추구하는 성격적 특성 때문인 것 같다.
이제는 부족하더라도 완벽하지 않아도 괜찮으니 한 걸음씩만 나아가볼 생각이다.
'알고리즘 및 자료 관리 > 알고리즘 & 코딩테스트' 카테고리의 다른 글
데이터 출력 2 - 기초 입출력 코딩테스트 문제 풀기 <코드업> (0) | 2024.08.24 |
---|---|
데이터 출력 1 - 이스케이프 문자로 출력하는 비교적 쉬운 문제 (0) | 2024.08.24 |
반복문 응용 4 - 피라미드 삼각형 별 찍기 (0) | 2024.08.24 |
약수, 배수와 소수 1 <백준 코딩테스트> - 약수와 배수 문제 풀기 (0) | 2024.08.24 |
반복문 응용 3 - 사각형과 평행사변형 별 찍기 (0) | 2024.08.24 |