백준 1193

marshmelody·2024년 4월 5일
0

이 문제는 딱 처음 봤을때 당연히 2차원 배열을 만들고, 답을 하나하나 찾아가는 식으로 풀어야 하는줄 알았는데,,, 생각해보니 해당 순서의 값만 알아내면 될 것 같았다! 표의 모든 값을 알아내는 것이 무의미하게 보였기 때문에 "어떻게 하면 순서로 값을 유추해낼 수 있을 것인가"에 초점을 맞추었다.

일단 대각선을 기준으로 for문을 작성하였고, 대각선 안에서 지그재그로 바뀌는 순서들은 생각하지 않았다. 대각선 안쪽의 순서는 그냥 대각선이 홀수번째/ 짝수번째인지에 따라 오른쪽 위로 향하는지/ 왼쪽 아래로 향하는지만 바뀌는 것이었기 때문이다. 중요한 것은 대각선이 바뀔 때의 숫자 처리였는데, 나는 대각선의 숫자들 중 가장 작은 숫자가 1, 1+1, 1+1+2+3, 1+1+2+3+4...로 증가함에 초점을 두고 코드를 작성하였다. X에서부터 역순으로 빼나가며 해당 대각선을 구했고, 대각선만 구하면 금방 풀리는 문제였다.

#include <stdio.h>

int main() {
	int  M = 1, x, X;

	scanf("%d", &x);

	X = x - 1;

	for (int i = 1; X > 0; i++) {
		X -= i;
		M++;
	}
	if (X < 0) {
		M--;
		X += M;
	}
	if (M % 2 == 1) {
		printf("%d/%d", M - X, X + 1);
	}
	else {
		printf("%d/%d", X + 1, M - X);
	}
	
	return 0;

}
profile
소프트웨어 전공생 백엔드 개발자 도전기

0개의 댓글

관련 채용 정보