728x90
반응형

문제

17362번 : 수학은 체육과목입니다 2

 

17362번: 수학은 체육과목 입니다 2

첫 번째 줄에 19번 문제 세 번째 줄에 등장하는 수 '1000'을 자연수 n으로 바꾸었을 때 그에 해당하는 답의 번호를 출력한다. 즉, 1 이상 5 이하의 자연수 중 하나를 출력해야 한다.

www.acmicpc.net

내가 작성한 코드 (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;
}

 

정리

처음에 이 문제를 보고나서 반복문을 이용해서 카운트를 증가시켜주거나 감소시켜주면 되겠다 생각했다.
하지만, 시간초과로 틀려서 조건문만을 이용해서 규칙을 찾아 풀어보았다.

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
반응형
복사했습니다!