컴공생의 발자취

[ 99클럽 코테 스터디 24일차 TIL ] 백준(17504번 - 제리와 톰 2) 본문

💡 코테/99클럽

[ 99클럽 코테 스터디 24일차 TIL ] 백준(17504번 - 제리와 톰 2)

MNY 2024. 4. 21. 22:14
728x90
반응형
💡 오늘의 학습 키워드

- 백준
    * 17504번 - 제리와 톰 2 : 미들러 문제(실버5)

 

오늘의 회고

문제1  : [17504번 - 제리와 톰 2]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

숫자의 개수와 [a1, a2, a3, ..] 이렇게 그 숫자의 개수에 맞게 수를 입력 받았을 때

1 - (a1 + (a2 + 1 / a3)) 이런 식으로 계산하고 분자와 분모를 출력하는 문제이다.

 

처음에는 단순하게 계산 결과를 출력하는 줄 알았다.

프로그래머스로 풀다 백준으로 푸니 문제 잘 못 읽었다..

 

그러고 그 다음 생각한 것은 분자, 분모를 변수로 두고 값을 넣은 후 계산한 걸 분자, 분모 값을 바꿔준다.

이때 이걸 홀수번째랑 짝수번째를 나누려고 생각했는데 그럴 필요가 없다는 걸 수식을 따라가며 그려보고 이해한다.

그러고 마지막에 1 즉, 분모의 값에서 분자의 값을 빼준 것을 분자의 값에 넣어 업데이트 해준다.

이제 그걸 분자, 분모 순으로 출력하면 오늘의 문제 끝!

 

 

17504번: 제리와 톰 2

$$ 1 - \cfrac{1}{2 + \cfrac{1}{7 + \cfrac{1}{1 + \cfrac{1}{8}}}} =  1 - \cfrac{1}{2 + \cfrac{1}{7 + \cfrac{8}{9}}} = 1 - \cfrac{1}{2 + \cfrac{9}{71}} = 1 - \cfrac{71}{151} = \cfrac{80}{151} $$

www.acmicpc.net

 

  • 어떻게 해결했는지
import java.util.*;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		sc.nextLine();
		
		int[] arr = new int[N];
		long first = 1; // 분모
		long second = 1; // 분자
		
		for (int i = 0; i < N; i++) {
			arr[i] = sc.nextInt();
		}
		
		first = arr[N-1];
		for (int i = N-2; i >= 0; i--) {
			long temp = 0;
			
			second = first * arr[i] + second;
			temp = second;
			second = first;
			first = temp;
		}
		second = first - second;
		
		System.out.println(second);
		System.out.println(first);
	}
}

 

  • 무엇을 새롭게 알았는지

오늘의 문제에서 새롭게 알게된 것은 

nextInt으로 값을 받고 Enter을 입력해서 새로운 값을 입력 받고 싶다면

nextLine으로 줄바꿈(Enter)을 없애주어야 한다!

또한, nextInt는 공백으로 숫자를 받을 수 있다.

 

오늘부터 비기너, 미들러의 문제는 백준에서 출제된다!

안 그래도 요즘 백준으로 조금씩 풀고 있었는데 오히려 좋다!!!

 

내일 학습할 것은 무엇인지 (최대 3개)

  • 정보처리기사 실기 공부
  • 클럽99 코딩테스트(비기너) 문제풀이
  • 내배캠 자바 수강
728x90
반응형