algorithm 백준 15927 아기 석환 뚜루루 뚜루 (c)

1 minute read

석환이는 계속 노래를 똑같이 부르기는 심심해서, 노래가 한 번 끝날 때마다 “tururu”와 “turu”에 “ru”를 한 번씩 더 추가해서 다음과 같이 부르려고 한다.

baby sukhwan tururu turu very cute tururu turu in bed tururu turu baby sukhwan

baby sukhwan turururu tururu very cute turururu tururu in bed turururu tururu baby sukhwan

baby sukhwan tururururu turururu very cute tururururu turururu in bed tururururu turururu baby sukhwan

이 때, 석환이가 부르는 노래의 N번째 단어는 무엇일까?

단, 출력할 단어가 “tururu…ru”일 때, “ru”가 k(k ≥ 5)번 반복되면 “tu+ru*k”와 같이 출력한다.

[출처] : 백준 온라인 저지

풀이

#include <stdio.h>

int main() {
	int num;
	scanf("%d", &num);
	
	int a = num / 14;

	switch (num % 14) {
	case 0:
	case 2:
		printf("sukhwan");
		break;
	case 1:
	case 13 :
		printf("baby");
		break;
	case 5:
		printf("very");
		break;
	case 6:
		printf("cute");
		break;
	case 9 :
		printf("in");
		break;
	case 10 :
		printf("bed");
		break;
	case 3:
	case 7:
	case 11:
		if (a == 0) printf("tururu");
		else if (a == 1) printf("turururu");
		else if (a == 2) printf("tururururu");
		else printf("tu+ru*%d", a+2);
		break;
	case 4:
	case 8:
	case 12:
		if (a == 0) printf("turu");
		else if (a == 1) printf("tururu");
		else if (a == 2) printf("turururu");
		else if (a == 3) printf("tururururu");
		else printf("tu+ru*%d", a+1);
		break;
	}
		
}
  • 단락 속 각 글자들은 총 14개로, 입력된 num을 14로 나눈 나머지로 번호 붙일 수 있다 (num % 14)

    • 각 글자는 순서대로 1번 ~ 13번, 0번의 순서를 가진다
    • switch (num % 14)
  • tu+ru*k 를 표현하기 위해서 단락을 구분해서 k 값을 지정해줘야 겠다고 생각했다

  • 한 단락은 총 14글자로 이루어져 있기 때문에 입력된 num 을 14로 나눈 몫으로 단락을 구분지었다 (num / 14)

    • 몫이 0이면 첫 번째 단락, 몫이 1이면 두 번째 단락 …
    • turururu 는 tu+ru*(몫+2)
    • tururu 는 tu+ru*(몫+1)

Categories:

Updated:

Comments