코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍
알고리즘/SWEA

[SWEA] 16800번 : 구구단 걷기

알고리즘/SWEA

[SWEA] 16800번 : 구구단 걷기

2023. 11. 5. 21:55

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AYaf9W8afyMDFAQ9

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제

당신은 무한히 많은 행과 열이 있는 곱셈표 위에 서 있다. (i, j)셀에는 정수 ixj 가 적혀 있다. (만약 행과 열이 9개라면 이는 구구단 표와 동일하다.) 현재 당신의 위치는 셀 (1, 1) 이다.
당신은 곱셈표의 오른쪽이나 아래쪽 방향으로 이동할 수 있다. 즉, 당신이 (i, j)에 서 있다면, (i+1, j)나 (i, j+1)로 이동할 수 있다.
정수 N이 주어질 때, N이 적혀 있는 어떤 셀에 도착하기 위해서 최소 몇 번 움직여야 하는가?

 

입력

첫 번째 줄에 테스트 케이스의 수 TC가 주어진다. 이후 TC개의 테스트 케이스가 새 줄로 구분되어 주어진다. 각 테스트 케이스는 다음과 같이 구성되었다.
첫 번째 줄에 정수 N이 주어진다. (2 <= N <= 10^12)

 

출력

각 테스트 케이스 마다 한 줄씩 문제의 정답을 출력하라.

 


소스코드

import java.io.*;

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

        for (int i = 0; i < t; i++) {
            long n = Long.parseLong(br.readLine());

            long min = Long.MAX_VALUE;
            for (int j = 1; j < n; j++) {
                if(n/j < j) break;
                if (n % j == 0) {
                    if ((n / j + j) < min) min = (n / j + j);
                }
            }

            sb.append("#" + (i + 1) + " " + (min - 2) + "\n");
        }
        System.out.println(sb);
    }
}

 

해결 방법

  1. 약수쌍(나눈 수, 몫)의 합이 가장 작은 약수쌍을 찾아야 한다.
  2. 가능한 약수쌍을 모두 구해야 한다.
  3. 나눈 수와 몫은 모두 약수가 될 수 있으므로 나누는 수가 몫보다 커지기 전까지 약수쌍을 구하면 된다.

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 1949번 : 등산로 조성  (1) 2023.11.06
[SWEA] 5658번 : 보물상자 비밀번호  (0) 2023.11.06
[SWEA] 4615번 : 재미있는 오셀로 게임  (0) 2023.11.05
[SWEA] 8016번 : 홀수 피라미드  (0) 2023.11.03
[SWEA] 11315번 : 오목 판정  (1) 2023.11.03
  • 문제
  • 입력
  • 출력
  • 소스코드
  • 해결 방법
'알고리즘/SWEA' 카테고리의 다른 글
  • [SWEA] 1949번 : 등산로 조성
  • [SWEA] 5658번 : 보물상자 비밀번호
  • [SWEA] 4615번 : 재미있는 오셀로 게임
  • [SWEA] 8016번 : 홀수 피라미드
코딍코딍
코딍코딍
ㅎ2

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.