티스토리 뷰

#include <stdio.h>

int main(void) {
	int n;
	scanf("%d", &n); //테스트 케이스
	
	while(n--) {
		int tmp;
		scanf("%d", &tmp); //입력
		
		int tmp2 = tmp/28; //1부터 15까지 찍고 다시 2까지 내려오는데, 구간의 크기가 28개이다.
		if(tmp%28 == 0) tmp2--; //1부터 28까지 하나의 구간이나, 28인 경우 tmp2가 0이 아니라 1이 된다 즉 28로 나눠지는 경우는 1을 감소시킨다,.
		tmp -= tmp2 * 28; //1~15~2의 구간을 구한 다음 이 구간의 개수 * 28을 하여 제하면, tmp는 1부터 28 사이의 값으로 결정된다.
		
		if(tmp > 15) tmp = 30-tmp; //16 이상을 14 이하로 바꿔줍니다.
		
		char a[4] = {}; //십진수를 이진수로 바꾼뒤 저장하는 배열
		for(int i=0; i<4; i++) { //10진수 -> 2진수
			a[i] = tmp&1; 
			tmp >>= 1;
		}
		for(int i=3; i>=0; i--) { //0을 V, 1을 딸기로 변환
			printf("%s", (char*[2]){"V","딸기"}[a[i]]); //출력
		} printf("\n");
	}
}

 

 

수를 입력받으면 1부터 28까지의 수로 변환한 다음에, 16부터 28까지의 수를 15 이하의 수로 바꿉니다.

 

여기서 1부터 15까지의 수를 2진법으로 변환한다음 V와 딸기로 변환해서 출력합니다.

 

 

https://www.acmicpc.net/problem/22935

 

22935번: 이진 딸기

첫 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 이후 T개의 줄에 걸쳐 이진 딸기를 처음 시작한 사람으로부터 몇 차례 후에 해강이가 말해야 하는지 N (1 ≤ N ≤ 1,000,000,000) 이 정

www.acmicpc.net

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함