[백준풀이]백준1193번(자바)

SeoYehJoon·2023년 9월 23일
0



필기




구현

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class FindNum 
{
	public static void main(String[] args) throws IOException
	{
		int now_y=1, now_x=1;
		BufferedReader br = 
				new BufferedReader(new InputStreamReader(System.in));
		
		int total_num = Integer.parseInt(br.readLine());
		int count=1;
		char dimension = 'x';
		int dir_y=1, dir_x=-1;
		
		for(int i=1;i<total_num;)
		{
			if(dimension=='y')
			{
				now_y+=1;
				dimension = 'x';
				i++;
				//System.out.printf("dimen[y]: %d  [x]: %d count: %d\n", now_y,now_x,count);
			}
			else//dimension=='x'
			{
				now_x+=1;
				dimension = 'y';
				i++;
				//System.out.printf("dimen[y]: %d  [x]: %d count: %d\n", now_y,now_x,count);
			}
			if(i>=total_num)break;
			for(int j=1;j<=count;j++)
			{
				now_y+=dir_y;
				now_x+=dir_x;
				i++;
				if(i>=total_num)break;
				//System.out.printf("[y]: %d  [x]: %d count: %d\n", now_y,now_x,count);
			}
			
			
			
			//대각선 위쪽방향 or 아랫쪽방향
			//count가 늘어남으로 대각선의 길이도 점점 늘어남
			dir_y*=-1;
			dir_x*=-1;
			count++;
		}
		
		System.out.println((now_y)+"/"+(now_x));
	}
}



구현 설명



이동 횟수 제한


위 사진은 이동 횟수와 관련된 숫자이다 백준에서 입력된값(total_num) - 1 만큼 이동하면 된다
ex) 2가 입력되면 두번째 위치의 분수를 구함으로 1번(2-1)만 이동 하면된다.
다음 두가지 원칙을 기억하자.
1. 한번 이동할때마다 i값을 증가해야 한다.
2. i값이 증가된 뒤에는 총횟수만큼 이동했는지 검사한다.



실제 위치 이동


노트필기중
빨간색 화살표 : 대각선 전환
초록색 화살표 : 대각선내 이동

dimension에 설정된 방향으로 오른쪽으로 가거나 밑쪽으로 이동한다.
대각선은 점점 길어짐으로 대각선 방향이 변할때 대각선 이동횟수도 증가해야한다.

잘 실행된다.

profile
책, 블로그 내용을 그대로 재정리하는 것은 가장 효율적인 시간 낭비 방법이다. 벨로그에 글을 쓸때는 직접 문제를 해결한 과정을 스크린샷을 이용해 정리하거나, 개념을 정리할때는 최소2,3개소스에서 이해한 지식을 정리한다.

0개의 댓글