IT/Programmers

[Programmers/코딩테스트 연습] 순서쌍, 개미군단, 모스부호(1) Java

안선생 Dr.Ahn 2022. 12. 5. 08:14
728x90
반응형

순서쌍 (Java)

n이 나누어 떨어지는 수(약수)의 개수 구하기

class Solution {
    public int solution(int n) {
        int answer = 0;
        
    
        for(int i = 1; i <= n ; i++) {
            if(n%i == 0) answer++;
        }
        return answer;
    }
}

Stream 이용하기 #IntStream #filter() #count() 

import java.util.stream.IntStream;
class Solution {
    public int solution(int n) {
        int answer = 0;
        
    
        answer = (int)IntStream.rangeClosed(1,n).filter(i -> n%i == 0).count();
        return answer;
    }
}

*import 잊지말자

 

개미군단 (Java)

stream을 이용한 뭔가가 있을 줄 알고 이것저것 해봤는데 다른 사람들도 결국 비슷하게 풀었더라.

class Solution {
    public int solution(int hp) {
        int answer = 0;
        int[] ant = {5, 3, 1};
        
        for(int i = 0; i < ant.length; i++) {
            answer += hp/ant[i];
            hp = hp%ant[i];
        }
        
        return answer;
    }
}

모스부호 (1) (Java)

class Solution {
    public String solution(String letter) {
        String answer = "";
        String[] morse = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
        
        String[] ltr = letter.split(" ");
        
        for (int i = 0; i < ltr.length; i++) {
            for (int j = 0; j < morse.length; j++) {
                if(ltr[i].equals(morse[j])) {
                    answer += (char)(j + 97);
                }
            }
        }
        
        return answer;
    }
}

더 간단한 방법을 찾고 싶었는데..

다른 사람 풀이가 더 길어서 내 코드에 만족하기로 했다.

아스키 코드를 잘 이용하지 않았는데, 코딩테스트 입문 예제를 통해 자주 사용하게 되어, 좋은 연습이 된다.

728x90
반응형