SseopE
SseopE
SseopE
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Programming (3)
      • JAVA (3)
    • Spring (7)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (5)
      • Spring 공부 (0)
    • Infra (6)
      • Docker (3)
      • Kubernetes (3)
      • Kafka (0)
    • Machine Learning (2)
      • Scikit-Learn (1)
      • MLOps (1)
      • BentoML (0)
      • Kubeflow (0)
    • OS (2)
      • Linux (2)
    • Algorithm (23)
      • Sorting (7)
      • BOJ (15)
      • Programmers (0)
      • Data Structure (1)
    • 특강 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바
  • TransformMixin
  • 스웜 모드
  • 백준
  • 2981번
  • 2275번
  • 2580번
  • Spring
  • 도커
  • Kubernetes
  • 1541번
  • 1931번
  • java
  • boj
  • scikit learn
  • docker
  • resource
  • BaseEstimator
  • Spring boot
  • container

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
SseopE

SseopE

[BOJ]  1193번 : 분수찾기 (JAVA/자바)
Algorithm/BOJ

[BOJ] 1193번 : 분수찾기 (JAVA/자바)

2022. 3. 10. 20:08

문제


알고리즘 고민

2022.03.10 - [Algorithm/BOJ] - [BOJ] 2292번 : 벌집 (JAVA/자바)

 

[BOJ] 2292번 : 벌집 (JAVA/자바)

문제 알고리즘 고민 패턴을 확인하기 위해 경계로 나누어지는 숫자를 확인하였다. 1 2 ~ 7 8 ~ 19 20 ~ 37 ... 위 숫자들을 식으로 확인해보면 6 x 0 + 1 6 x 0 + 2 <= num < 6 x 1 + 2 6 x 1 + 2 <= num < 6 x 3..

shinscode.tistory.com

위의 문제와 푸는 방법이 유사 했다. 패턴을 찾고 패턴에 해당하는 순번의 숫자를 찾은 후 데이터를 처리해주면 된다.

다만, 마지막 값을 출력할때 순서 차이가 있어 조금 달랐다.

출력되는 값의 순서를 확인해보면 다음과 같은 순서가 존재했다.

또한, 각 대각선의 맨위 값에서 부터 확인해보면 분자는 1부터 1, 2, 3, 4, 5 까지 증가하고 분모는 1, 2, 3, 4, 5에서 1까지 순차적으로 감소한다.

 

먼저, 어느 대각선에 존재하는 순서의 숫자인지 확인하기 위해서 n 값에 순차적으로 1, 2, 3, 4, 5씩 더해주면서 찾고, 그 다음으로는 대각선의 몇번째에 존재하는 숫자인지 찾았다. 다음으로는 n 번째 대각선의 숫자일때

n % 2 == 0 즉, 짝수번째의 대각선의 숫자라면 위에서부터 홀수번째의 대각선 숫자라면 아래에서부터 이기때문에 서로 출력되는 순서를 반대로 하였다.


JAVA Code

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

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

        int lo = 1, hi = 1, add = 1;
        while (hi < num) {
            lo += add;
            hi += (++add);
        }

        int up = num - lo + 1, down = add - (num -  lo);
        if (add % 2 == 0) {
            System.out.print(up + "/" + down);
        } else {
            System.out.print(down + "/" + up);
        }
    }
}

 

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 2775번 : 부녀회장이 될테야 (JAVA/자바)  (0) 2022.03.11
[BOJ] 10250번 : ACM 호텔 (JAVA/자바)  (0) 2022.03.10
[BOJ] 2869번 : 달팽이는 올라가고 싶다 (JAVA/자바)  (0) 2022.03.10
[BOJ] 2292번 : 벌집 (JAVA/자바)  (0) 2022.03.10
[BOJ] 1712번 : 손익분기점 (JAVA/자바)  (0) 2022.03.10
    'Algorithm/BOJ' 카테고리의 다른 글
    • [BOJ] 10250번 : ACM 호텔 (JAVA/자바)
    • [BOJ] 2869번 : 달팽이는 올라가고 싶다 (JAVA/자바)
    • [BOJ] 2292번 : 벌집 (JAVA/자바)
    • [BOJ] 1712번 : 손익분기점 (JAVA/자바)
    SseopE
    SseopE

    티스토리툴바