본문 바로가기

알고리즘/🥉 브론즈

백준 1598 꼬리를 무는 숫자 나열 자바 풀이

728x90

난이도 : 브론즈3

풀이일 : 12133

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

 

1598번: 꼬리를 무는 숫자 나열

첫째 줄에 원숭이가 생각한 두 개의 자연수가 주어진다. 각 수는 10,000,000 이하이다.

www.acmicpc.net


링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐


풀이 코드

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

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());

		int N = Integer.parseInt(st.nextToken()) - 1;
		int M = Integer.parseInt(st.nextToken()) - 1;

		int x1 = N / 4;
		int y1 = N % 4;

		int x2 = M / 4;
		int y2 = M % 4;

		System.out.println(Math.abs(x1 - x2) + Math.abs(y1 - y2));
	}
}
  • 새로 배운 것
    • StringTokenizer : 특정 구분문자를 기준으로 입력 받은 것들을 분리 (미입력시 공백을 기준으로 분리)
    • nextToken() : StringTokenizer로 분리한 토큰들 순서대로 가져오기
    • Integer.parseInt() : 문자열의 타입을 정수로 변환
    • Math.abs() : 절대값 구하기 (내부와 동일한 타입으로 반환)
  • 풀이
    • N, M 설정 시, 4로 나누어 떨어지는 경우 오답이 발생하는 것을 해결하기 위해, 1을 뺄셈
    • 두 수의 x, y 좌표 값을 구한 뒤, 각 좌표끼리의 비교로 절댓값을 더해 출력

느낀점

  • 이전에는 실버 문제로 빨리 넘어가고 복잡한 문제를 풀고 싶어서 대충 넘어갔었던 것 같은데, 브론즈 문제 중에서도 내가 풀기 위해 새로운 것들을 찾아보고 익혀야 하는 것들이 많다. 하나씩 경험해보고 익숙해지는 과정을 거치자.
  • 그리고 진짜 다시 꾸준히 풀어야지! 화이팅