369 게임 박수의 개수는?
문제설명
1. 한 사람씩 차례대로 숫자를 1씩 더해가며 말합니다.
2. 말해야 하는 숫자에 3, 6, 9 중 하나라도 포함되어있다면 숫자를 말하는 대신 숫자에 포함된 3, 6, 9의 개수만큼 손뼉을 칩니다.
어떤 수 number가 매개변수로 주어질 떄, 1 ~ number까지 369 게임을 올바르게 진행했을 경우 박수를 총 몇 번 쳤는지 return하는 solution함수를 작성하세요.
예시
number | return |
40 | 22 |
예시 설명
3, 6, 9 : 각각 한 번 (총 +3)
13, 16, 19 : 각각 한 번 (총 +3)
23, 26, 29 : 각각 한 번 (총 +3)
30, 31, 32, 33, ..., 38, 39 : 십의 자리 10번 + 일의 자리 3번 총 (+13)
따라서 3 + 3 + 3 + 13 = 22번 박수를 친다.
코드 해석 및 전체 코드
count ) 박수 친 횟수
for문 ) 1 ~ number까지 반복
current )
1의 자리가 3의 배수인지 구하기 위해 필요한 변수
for문을 돌 때마다 변수의 값이 바뀜
while문 )
current가 0일 경우 반복문을 탈출함.
if in while ) current % 10이 3이거나 6이거나 9일 경우 count의 값을 1 증가함.
while) if문을 수행하고 current를 10으로 나누었을 때 (10의 자리가 1의 자리가 됨) 0이 아니면 while문 수행함.
if in while) 10으로 나눈 current를 10으로 나누었을 때의 나머지가 3, 6, 9일 경우 count의 값을 1 증가함.
current가 1의 자리일 경우
current | count | current /= 10 |
2 | if문의 조건에 맞지 않아 증가 X | 0 |
3 | 10으로 나누었을 때 나머지가 3이 되므로 1 증가 |
0 |
current가 0이 되므로 while문을 탈출한다.
current가 10의 자리일 경우
current | count | current /= 10 | 10으로 나누었을 시 if문 조건 |
13 | 10으로 나누었을 때 나머지가 3이 되므로 1 증가 |
1 | if문의 조건에 맞지 않아 증가 X |
33 | 10으로 나누었을 때 나머지가 3이 되므로 1 증가 |
3 | 10으로 나누었을 때 나머지가 3이 되므로 1 증가 |
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int number) {
int count = 0;
for (int i = 1; i <= number; i++) {
int current = i;
while (current != 0) {
if (current % 10 == 3 || current % 10 == 6 || current % 10 == 9)
count++;
current /= 10;
}
}
return count;
}
int main() {
int number = 40;
int ret = solution(number);
printf("The return value of solution function %d \n", ret);
}
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.8] 팰린드롬 판단하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.06 |
---|---|
[No.7] 영어 수강 대상자 수 구하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.06 |
[No.5] 배열의 순서 뒤집기 / cos pro 2급 c언어 기출 문제 (3) | 2021.05.05 |
[No.4] 등장하는 가장 많은 수와 적은 수 구하기 / cos pro 2급 c언어 기출 문제 (4) | 2021.05.03 |
[No.3] 시작 날짜와 끝 날짜의 사이 날짜 구하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.03 |
댓글