728x90
반응형
1. 문제
17362번: 수학은 체육과목 입니다 2
첫 번째 줄에 19번 문제 세 번째 줄에 등장하는 수 '1000'을 자연수 n으로 바꾸었을 때 그에 해당하는 답의 번호를 출력한다. 즉, 1 이상 5 이하의 자연수 중 하나를 출력해야 한다.
www.acmicpc.net
2. 내가 작성한 코드 (C++ 성공)
#include <iostream>
using namespace std;
int main(){
cin.tie(0);
int n;
cin >> n;
/*
1 2 3 4
5
8 7 6
9
10 11 12
13
16 15 14
17
...
*/
if(n%8 >= 1 && n%8 <= 5){
cout << n%8;
} else if(n%8 == 6){
cout << "4\n";
} else if(n%8 == 7){
cout << "3\n";
} else if(n%8 == 0){
cout << "2\n";
}
return 0;
}
3. 정리
처음에 이 문제를 보고나서 반복문을 이용해서 카운트를 증가시켜주거나 감소시켜주면 되겠다 생각했다.
하지만, 시간초과로 틀려서 조건문만을 이용해서 규칙을 찾아 풀어보았다.
1 2 3 4 5
1 2 3 4
5
8 7 6
9
10 11 12
13
16 15 14
17
이런식으로 가기 때문에 규칙을 찾다보니 8로 나눈 나머지로 구분할 수 있었다.
8로 나눈 나머지가 1~5까지는 각 숫자를 출력하고
6일 때 4를, 7일 때 3을, 0일 때 2를 출력해 주도록 따로 조건문을 만들어 출력해주었다.
728x90
반응형
'알고리즘 > BaekJoon' 카테고리의 다른 글
[백준 알고리즘] 1920번 : 수 찾기 (0) | 2019.07.31 |
---|---|
[백준 알고리즘] 17213번 : 과일 서리 (0) | 2019.07.31 |
[백준 알고리즘] 4948번 : 베르트랑 공준 (0) | 2019.07.21 |
[백준 알고리즘] 1476번 : 날짜 계산 (0) | 2019.07.21 |
[백준 알고리즘] 1094번 : 막대기 (0) | 2019.07.21 |