Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Recent Comments
													
											
												
												
													Link
													
											
									| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 28 | 29 | 30 | 31 | 
													Tags
													
											
												
												- 구현
- 구름LEVEL
- IntelliJ
- bfs
- 해시맵
- spring boot
- 해결
- 스프링부트
- 이직
- 인프라
- 개발자
- 스타트업
- docker
- Java
- HashMap
- 문자열
- 배열
- dfs
- 백엔드
- 주니어
- 자료구조
- spring
- 인텔리제이
- 코딩테스트
- Linux
- 도커
- 스프링 부트
- HTTP
- 스프링
- 프로그래머스
													Archives
													
											
												
												- Today
- Total
마이의 개발 블로그
[프로그래머스] 유한소수 판별하기 (Java) 본문
반응형
    
    
    
  
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
난이도가 높은 문제는 아닌데 다른 사람 풀이 중에 너무 간단한 답변이 있어 기록을 남기려고 가져와봤다.
- 두 수의 최대공약수를 구함 (gcd)
- 기약분수로 만들기 위해 분모를 최대공약수로 나눠줌
- n = 2부터 시작하여 소인수분해(나머지가 0이면 계속 나눠주고 아니면 n 증가)
- 나뉘는 숫자가 2나 5가 아닐 경우 무한소수이므로 2 리턴
Note
- 이거 풀었다고 3점 주던데 프로그래머스 점수 산정 기준이 뭔지 모르겠다.
- 아래는 내 답안
class Solution {
    public int solution(int a, int b) {
        int answer = 1;
        int gcd = gcd(a, b);
        
        b /= gcd;
        int n = 2;
        
        while(b > 1){
            if(b % n == 0){
                if(n != 2 && n != 5){
                    answer = 2;
                    break;
                }
                b /= n;
            }else{
                n++;
            }
        }
        
        return answer;
    }
    
    private int gcd(int a, int b){
        if(a % b == 0){
            return b;
        }
        
        return gcd(b, a % b);
    }
}- 맨 위에 올라와있던, 너무 간단하게 풀어낸 답안. 이게 왜 통과하는지 아직 잘 이해를 못했는데 댓글보니까 통과못하는 케이스도 있는 것 같아서 정답이 아닐 수도 있을 듯 하다.
class Solution {
    public int solution(int a, int b) {
        int answer = ((a*1000)%b == 0) ? 1 : 2;
        return answer;
    }
}반응형
    
    
    
  '코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 땅따먹기 (Java) (1) | 2023.03.13 | 
|---|---|
| [프로그래머스] 대충 만든 자판 (Java) (0) | 2023.03.08 | 
| [프로그래머스] 롤케이크 자르기 (Java) (0) | 2023.02.21 | 
| [프로그래머스] 캐시 (Java) (0) | 2023.02.19 | 
| [프로그래머스] 카드 뭉치 (Java) (0) | 2023.02.18 | 
			  Comments
			
		
	
               
           
					
					
					
					
					
					
					
				