1085
x, y, w, h를 받아서 x,y에서 직사각형의 경계선으로 가는 거리의 최소값을 구하는 프로그램을 작성해야 한다.
일단 x, y, w, h를 순서대로 받았다.
그리고 내가 문제를 푼 방식은 x와 w-x 중에 작은 수를 x로 설정(1),
y와 h-y 중에 작은 수를 y로 설정(2),
x, y중에 작은 수(3)를 출력
이런식으로 진행했다.
어차피 1, 2의 과정에서 더 큰수는 최솟값이 될 수 없기 때문에 일단 한번 걸러줬고
1, 2 과정에서 작은 수여서 x, y로 설정된 수 중 비교하면 최솟값을 얻어낼 수 있다.
x, y, w, h가 모두 양수이고 x, y는 직사각형 안에서 움직이는 수들이기 때문에 음수 고려를 할 필요가 없어서 편했다.
2609
두 자연수를 입력받아 최대공약수, 최소공배수를 출력하는 프로그램을 작성해보자.
a, b : 입력받는 수들을 저장하는 변수
i : 반복문 전용
yak, bae : 최대공약수, 최소공배수 저장하는 변수
small : a랑 b중에 더 작은 수를 저장하는 변수
일단 scanf로 a, b 입력받고
최대공약수를 고르기 위해서 일단 a랑 b중에 더 작은 수를 if문을 이용해 골라두었다.
왜냐하면 두 수를 어떤 수로 나누었을 때 둘 다 0이 되는 수가 공약수인데 더 작은수로 나누었을 때의 나머지가 0일때까지만 생각을 해주는게 좋기 때문이다.
그니까 예를 들어 24랑 6이 있는데.
1부터 6까지만 두 수를 각각 나눠보면서 공약수를 찾는게 의미가 있지 12, 18 등의 수로 6을 나누는 것은 공약수를 찾을 때 필요없는 행동이기 때문이다.
암튼 그래서 16번째줄부터!
반복문을 이용하여 1부터 small까지 하나씩 증가하며 a랑b를 둘다 i로 나머지연산 처리를 했을 때 0이 나온다면 이것은 두 수의 공약수가 된다.
이럴때마다 yak 변수를 업데이트해준다. 작은 수부터 i를 증가시키므로 맨 마지막에 들어와있는 yak이 최대공약수일 것이다.
최소공배수는
중학교때인가,, 초등학교때 배운 요 개념을 사용해서 최소공배수를 구해주었다.
그리고 프린트 하면 끝!
10039
5명 학생의 기말고사 점수를 받아서 평균을 구한다.(단 40점 미만인 학생은 40점으로 처리한다.)
score[5] : 5명의 점수를 저장하는 배열
sum : 5명의 점수를 합해줄 변수
i : 반복문용
5번 반복하면서 점수를 하나씩 받는다.
만약에 그 점수가 40점 미만이면 40점으로 처리한다.
sum변수에 하나씩 더해준다.(처음에 sum을 0으로 초기화해둬야함)
5로 나눈 값을 출력한다.
10870
n이 주어졌을 때 n번째의 피보나치 수를 구하는 프로그램을 작성해보자.
for문을 이용하면 더 쉬울 것 같은데, 재귀함수를 이용하라고 했으니 재귀함수를 이용해서 코드를 짰다.
n을 입력받고 fibo(n) 값을 출력하기로 했다.
만약 n이 0이면 0이니까 0을 리턴하고, n이 1이면 1이니까 1을 리턴한다. 그 두개가 아닐 때에는
전항과 전전항을 더한 값을 리턴한다. 이 과정을 fibo(n)이 될때까지 반복해주면 n번째 피보나치수가 나오게 된다.
2576
7개의 자연수가 주어질때 홀수인 자연수들을 골라 합을 구하고 홀수 중 최솟값을 찾는 프로그램을 작성하자.
nature[7] : 자연수들 저장하는 배열
odd : 홀수들의 합을 구할 변수
oddlist : 홀수들 중 최솟값을 찾기위해 만든 홀수리스트 배열
i : 반복문
small : 홀수들 중 최솟값
일단 nature배열에 하나씩 입력을 받는다. 이 수를 2로 나누었을때의 나머지가 1이라는 것은 홀수라는 뜻이므로 이 경우에는 odd에 그 수를 더해주고 oddlist에도 추가해준다.
2로 나누었을때의 나머지가 0이라는것은 짝수라는 뜻이므로 이 경우에는 그냥 oddlist에 0을 저장해준다.
small을 100으로 선언했는데, 어차피 자연수는 100보다 작으니까 oddlist에서 100보다 큰 수는 없을 것이고 차례로 업데이트 해주기 위해서 이렇게 선언했다.
그리고 odd가 0이면 이 7개의 자연수는 모두 짝수라는 뜻이다. 그러므로 -1을 출력한다.
그렇지 않으면 홀수들의 최솟값을 찾아야하는데, 반복문을 돌리면서 oddlist배열의 값이 0이 아니면서도 oddlist배열의 값이 small보다 작으면 small의 값을 oddlist배열의 값으로 업데이트해준다.
반복문이 끝나면 small에는 oddlist에 있는 홀수 중 가장 작은 수가 들어가 있을 것이다.
그러고 나서 odd랑 small을 각각 출력해주면 된다.
2480
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
- 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
- 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
- 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
3개 주사위의 나온 눈이 주어질때 상금 계산 프로그램을 작성해보자
R1, R2, R3 : 주사위 나온 수 받는 변수
price : 상금
8-9 줄 : 세개 다 같은 경우
11-16 줄 : 두개만 같은 눈인 경우
17-23 줄 : 모두 다른 눈이 나오는 경우(R1이 제일 큰 경우, R2가 제일 큰 경우, R3가 제일 큰 경우로 나누어서 품)
백준 푸는 사람들이 실버~ 골드~ 어쩌구 하던데 이런게 있다는걸 어제 발견했ㅋㅋㅋㅋㅋㅋ
실버군요 저는,,, 언능 골드가 되어보겠습니다.
'CODING > BAEKJOON' 카테고리의 다른 글
백준 C언어 7568번 덩치 : for문을 이용하면 쉽게 풀리는 (0) | 2022.03.29 |
---|---|
백준 C언어 문자열 문제 풀이 : 11654, 11720, 2908, 1152 (0) | 2022.01.18 |
백준 C언어 5단계 1차원 배열 문제풀이 : 2577, 3052, 1546 (0) | 2021.12.21 |
백준 파이썬 5단계 1차원 배열 문제풀이 : 10818, 2562 (0) | 2021.12.21 |
백준 C언어 4단계 while문 문제풀이 : 10952, 10951, 1110 (0) | 2021.12.20 |