Lv 2. 숫자블록

2025. 2. 3. 14:58·Algorithm & Data Structures/Programers

 

https://school.programmers.co.kr/learn/courses/30/lessons/12923?language=java

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

자연수 n에 대해, 1과 n을 제외한 약수 중에서 10,000,000 이하인 값 중 가장 큰 값을 찾아야 한다.
만약 그런 값이 없다면 1을 반환해야 한다. 단, n이 1이라면 0을 반환합니다.

처음 작성했던 코드에서는 n의 약수를 찾을 때 첫 번째로 발견되는 약수 쌍을 이용하여

바로 반환하는 방식이었다.

하지만 이 방식은 모든 경우를 정확하게 처리하지 못했다.

 

예를 들어, n = 20000010일 때, 약수는 [1, 2, 10000005, 20000010]가된다.

이 경우 10000005는 10,000,000을 초과하므로 사용할 수 없고, 2를 반환해야 한다.

하지만 기존 코드에서는 10000005가 너무 커서 그냥 넘어가버리고,

다른 후보를 저장하지 않아서 잘못된 값을 반환하게 되었다.

 

이를 해결하기 위해, 첫 번째로 발견되는 약수 쌍만 확인하는 것이 아니라,

작은 약수도 저장해서 조건에 맞는 값을 최종적으로 선택하는 방식으로 수정했습니다.
즉, 큰 약수가 조건을 만족하면 바로 반환하고,

그렇지 않다면 작은 약수를 저장해두었다가 끝까지 적절한 값이 없을 경우

작은 약수를 반환하도록 변경했다.


문제 해결 과정에서 첫 번째로 발견된 약수만을 사용하는 것이 아니라,

적절한 후보를 저장하면서 최종적으로 가장 적합한 값을

반환하는 방식을 적용하는 것이 핵심이었다.

 

 

package Programmers;

class p_number_Block {
	private int isPrime(int n){
		if(n == 1) return 0;
		int max = 1;

		for(int i = 2 ; i <= Math.sqrt(n) ; i++){
			if(n % i == 0){
				if(n / i <= 10000000) return n / i;
				max = i;
			}
		}
		return max;
	}

	public int[] solution(long begin, long end) {
		int[] result = new int[(int)(end - begin + 1)];
		int index = 0;

		for(long i = begin ; i <= end ; i++){
			result[index++] = isPrime((int)i);
		}

		return result;
	}
}

 

'Algorithm & Data Structures > Programers' 카테고리의 다른 글

Lv 2. 양궁대회  (0) 2025.02.28
Lv 2. 조이스틱  (0) 2025.02.05
Lv3. 길찾기 게임  (1) 2025.01.24
Lv2. 혼자 놀기의 달인  (0) 2025.01.22
Lv 4. 도둑질  (1) 2025.01.20
'Algorithm & Data Structures/Programers' 카테고리의 다른 글
  • Lv 2. 양궁대회
  • Lv 2. 조이스틱
  • Lv3. 길찾기 게임
  • Lv2. 혼자 놀기의 달인
Geisha
Geisha
개발 일기
  • Geisha
    Geisha
    Geisha
  • 전체
    오늘
    어제
    • 분류 전체보기 (347)
      • Algorithm & Data Structures (265)
        • BOJ (123)
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (29)
        • SQL (23)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • 운영체제 (13)
        • 네트워크 (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    programmers
    이분탐색
    PriorityQueue
    DynamicProgramming
    baekjoon
    Java
    다익스트라
    골드
    dfs
    백트래킹
    유니온파인드
    구현
    프로그래머스
    동적계획법
    Dijkstra
    다이나믹 프로그래밍
    binarySearch
    투포인터
    위상정렬
    Union-Find
    알고리즘
    자바
    경로압축
    백준
    스택
    Stack
    dp
    SQL
    BFS
    algorithm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Geisha
Lv 2. 숫자블록
상단으로

티스토리툴바