[백준 - JAVA] 4375번 : 1

2023. 3. 22. 15:18·Algorithm/Algorithm Problem

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

 

4375번: 1

2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.

www.acmicpc.net

 

문제 조건 파악 및 접근

 

문제를 보고 이해하는데 살짝 시간이 걸렸는데 결국 주어진 n의 배수 중에서 1로만 이뤄진 n의 배수를 찾는 문제였다.

 

우선 2와 5로 나누어 떨어지지 않는다는 조건이 왜 붙었냐면, 소인수분해 시 2와 5가 있을 경우 그 중 작은 수 만큼 수의 낮은 자리수에 0이 생겨서 1로 나누어떨어지지 않게 된다. 즉, 위 조건은 언젠가 1로만 이루어진 n의 배수가 나타나는 것이 보장되었다고 얘기하는 부분이다.

 

 

해당 문제는 나머지 연산의 법칙을 알고 있어야 한다.

 

1111... 이걸 잘 보면 예를들어 1111 = ((10+1)*10+1)*10+1 이고, 그 다음 숫자인 11111은 1111*10+1 이다. 이렇게 매번 곱셈과 덧셈을 해서 다음 수를 찾을 수 있다.

 

그리고 우리가 찾으려고 하는건 111, 1111, 11111... 이런식으로 증가시키다가 1111..%n이 0이 되는 값을 찾는 것이다. 따라서 위 분배법칙을 적용시켜서 매번 %n을 해줘도, 0이 되는 값을 찾는데 문제가 없다는걸 알 수 있다.

 

      1 % 7 = 1                                                | n = 7, x = 1  > 11, i = 1 
     11 % 7 =      (1 % 7) x 10 + 1 = 10 + 1 = 11 , 11 % 7 = 4 | n = 7, x = 11 > 41, i = 2 
    111 % 7 =     (11 % 7) x 10 + 1 = 40 + 1 = 41 , 41 % 7 = 6 | n = 7, x = 41 > 61, i = 3
   1111 % 7 =    (111 % 7) x 10 + 1 = 60 + 1 = 61 , 61 % 7 = 5 | n = 7, x = 61 > 51, i = 4
  11111 % 7 =   (1111 % 7) x 10 + 1 = 50 + 1 = 51 , 51 % 7 = 2 | n = 7, x = 51 > 21, i = 5
 111111 % 7 =  (11111 % 7) x 10 + 1 = 20 + 1 = 21 , 21 % 7 = 0 | n = 7, x = 21 >  1, i = 6
1111111 % 7 = (111111 % 7) x 10 + 1 =  0 + 1 =  1              | n = 7, x = 1  >  1

 

 

소스 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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));
 
        String strNum = "";
        while ((strNum = br.readLine()) != null) {
            int n = Integer.parseInt(strNum);
            int onlyOne = 0;
 
            for (int cnt = 1; ; cnt++) {
                onlyOne = (onlyOne * 10 + 1)% n;
 
                if (onlyOne == 0) {
                    System.out.println(cnt);
                    break;
                }
            }
        }
 
        br.close();
    }
}
Colored by Color Scripter
cs
'Algorithm/Algorithm Problem' 카테고리의 다른 글
  • [백준 - JAVA] 2606번 : 바이러스
  • [백준 - JAVA] 2470번 : 두 용액
s_y_130
s_y_130
  • s_y_130
    About SY
    s_y_130
  • 전체
    오늘
    어제
    • 분류 전체보기 (429) N
      • JAVA (54)
        • 더 자바 8 (0)
        • JAVA (41)
        • JAVA (JVM) (13)
      • Computer Science (86)
        • CS Basic (7)
        • OOP (11)
        • Design Pattern (16)
        • Network (8)
        • HTTP (6)
        • WEB (22)
        • OS (16)
      • DataBase (29)
        • DB theory (15)
        • MySQL (14)
        • Redis (0)
      • Collection Framework (1)
        • 구현 (1)
      • Data Structure (14)
        • Linear (9)
        • Non-Linear (5)
      • Algorithm (19)
        • Basic (12)
        • 응용 (2)
        • 완전 탐색(Brute Force) (1)
        • 다익스트라 (1)
        • Algorithm Problem (3)
      • Spring (102) N
        • 스프링 핵심 원리 - 기본편 (9)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (7)
        • 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 (11)
        • 스프링 DB 1편 - 데이터 접근 핵심 원리 (6)
        • 스프링 DB 2편 - 데이터 접근 활용 기술 (10)
        • 스프링 핵심 원리 - 고급편 (13)
        • 스프링 부트 - 핵심 원리와 활용 (9)
        • Spring Security 6.x (2) N
        • Spring Cloud로 개발하는 MSA (1)
        • 재고시스템으로 알아보는 동시성이슈 해결방법 (4)
        • 개념 (27)
        • 테스트 (0)
        • Annotation (1)
        • Error Log (2)
      • TEST (0)
        • 부하 테스트 (0)
        • Practical Testing: 실용적인 테스트.. (0)
      • JPA (40)
        • 자바 ORM 표준 JPA 프로그래밍 (12)
        • 1편- 실전! 스프링 부트와 JPA 활용 (7)
        • 2편- 실전! 스프링 부트와 JPA 활용 (4)
        • 실전! 스프링 데이터 JPA (6)
        • 실전! Querydsl (6)
        • 개념 (5)
      • 백엔드 부트캠프[사전캠프] (35) N
        • TIL (12)
        • 문제풀이 (23) N
      • Open Source (0)
      • Book Study (1)
        • Morden Java in Action (1)
        • Real MySQL 8.0 Vol.1 (0)
        • TDD : By Example (0)
      • AWS (0)
        • EC2 (0)
      • git (2)
      • AI (22)
        • Machine Learning (17)
        • Deep Learning (0)
        • TensorFlow (1)
        • PyTorch (1)
        • YOLO (1)
        • Data Analysis (0)
        • Ai code Error (1)
        • Numpy (1)
      • MY (0)
      • WEB (15)
        • Django (3)
        • WEB 개념 (1)
        • React (1)
        • Maven (10)
      • Python (6)
      • 기초수학 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s_y_130
[백준 - JAVA] 4375번 : 1
상단으로

티스토리툴바