문제

UCPC 초등학교의 체육대회 날이 다가오고 있다. UCPC 초등학교 1학년 1반의 학생들은 담임 선생님 종서의 지시에 맞춰 특정한 방향을 바라보는 연습을 하고 있다.

학생들은 초기에 북쪽을 바라보고 있으며, 종서는 다음과 같은 형태의 지시를 총 열 번 내린다:

  • 우향우: 각 학생은 현재 상태에서 오른쪽으로 90도 돈다.
  • 뒤로 돌아: 각 학생은 현재 상태에서 오른쪽으로 180도 돈다.
  • 좌향좌: 각 학생은 현재 상태에서 왼쪽으로 90도 돈다.

종서는 초등학생들이 지시를 정확하게 이행하는 것이 어렵다는 것을 인지하고, 학생들이 자신의 지시를 성공적으로 따른다면 사탕을 나누어 주기로 했다. 학생들을 도와 담임 선생님 종서의 지시대로 바라보는 방향을 바꾸었을 때, 최종적으로 바라보는 방향을 구해보자.

 

 

조건 및 입출력

- 10개의 줄에 걸쳐 종서가 내린 각 지시에 대한 정보를 나타내는 정수 Ti(1≤i≤10)가 한 줄에 하나씩 주어진다.Ti의 값은 1, 2, 3중 하나로,

  •  Ti = 1이라면 i 번째 명령이 우향우임을,
  •  Ti = 2이라면 i 번째 명령이 뒤로 돌아임을,
  • Ti = 3이라면 i 번째 명령이 좌향좌임을

나타낸다.

-  10개의 지시를 모두 이행한 후 학생들이 바라보는 방향을 나타내는 문자를 출력한다. 학생들이 바라보는 방향이 북쪽이라면 N, 동쪽이라면 E, 서쪽이라면 W, 남쪽이라면 S를 출력한다.

- 시간 제한: 2초 이내 / 메모리 제한: 1024MB 이내

 

 

코드 (C99)
#include <stdio.h>

main()
{
	char* face = "NESW";
	int command = 0;

	for (int i = 0; i < 10; i++)
	{
		int temp;
		scanf("%d", &temp);
		command += temp;
	}
	printf("%c", face[command % 4]);

	return 0;
}

 

 


여담

오랜만에 C언어 코드를 블로그에 올리는 듯 하다.

 

문제 풀이는 문자열 "NESW"를 기준으로 잡았다. 북쪽이 초기 조건이기 때문이다.

N(북쪽)이 초기이므로 여기서 2를 입력받으면 S가 나오면 S(남쪽)이 나오게 하려면 4방위를 구현하면 된다.

 

이후에는 명령들을 전부 다 더한다.

그 후 4로 나머지 연산을 한 뒤, 문자열 해당 인덱스에 있는 문자를 출력하면 된다.

 

코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요! 

+ 더 좋은 풀이 방법이 있다면,댓글로 알려주세요 :)

+ Recent posts