본문 바로가기
코딩테스트/programmers

프로그래머스 [#2] 코딩테스트 연습 JAVA - 2

by 8Antony 2022. 11. 23.

 

1. x만큼 간격이 있는 n개의 숫자

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

class Solution{
    public long[] solution(int x, int n){
        long[] answer = new long[n];
        answer[0] = x;
        for(long i = 1; i < n; ++i){
            answer[i] = answer[i - 1] + x;
        }
        return answer;
    }
}

 

 

 

2. 나머지가 1이 되는 수 찾기

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

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

 

 

3. 두 정수 사이의 합

 

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        if(a > b){
            for(int i = b; i <= a; ++i){
                answer += i;
            }
        }
        else if(a < b){
            for(int i = a; i <= b; ++i){
                answer += i;
            }
        }
        else{
            return a;
        }
        return answer;
    }
}

 

 

4. 콜라츠 추측

 

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

class Solution{
    public int solution(long num){
        int answer = 0;
        if(num == 1) return 0;
        int i = 0;
        for(i = 0; i < 500; ++i){
            if(num % 2 == 0){
                num = num / 2;
            }
            else{
                num = num * 3 + 1;
            }
            if(num == 1){
                return i+1;
            }
        }
        
        return -1;
    }
}

   

 

5. 서울에서 김서방 찾기

 

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

class Solution{
    public String solution(String[] seoul){
        int index = 0;
        for(int i = 0; i < seoul.length; ++i){
            if(seoul[i].equals("Kim")){
                index = i;
                break;
            }
        }
        return "김서방은 " + index + "에 있다";
    }
}

 

 

 

6. 핸드폰 번호 가리기

 

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

import java.util.*;
class Solution{
    public String solution(String phone_number){
        char[] c = phone_number.toCharArray();
        for(int i = 0; i < c.length - 4; ++i){
            c[i] = '*';
        }
        return String.valueOf(c);
    }
}

 

 

 

7. 나누어 떨어지는 숫자 배열

 

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

import java.util.*;
class Solution {
    public int[] solution(int[] arr, int divisor) {
        int cnt = 0;
        for(int i = 0; i < arr.length; ++i){
            if(arr[i] % divisor == 0){
                cnt += 1;
            }
        }
        if(cnt == 0){
            int[] answer = {-1};
            return answer;
        }
        int[] answer = new int[cnt];
        int index = 0; // answer 배열의 index
        for(int i = 0; i < arr.length; ++i){
            if(arr[i] % divisor == 0){
                answer[index] = arr[i];
                index++;
            }
        }
        Arrays.sort(answer);
        return answer;
    }
}

 

 

 


 

Appendix

 

선형탐색 (equals, replacaAll, startsWith() )

 

equals : String 비교 메소드  

 

str1.equals(str2)

 

boolean 타입 : 두 문자열이 같으면 true, 다르면 false 리턴 

 

replaceAll() : 문자열을 원하는 문자값으로 변환하는 함수 (특정 문자열 제거)

 

String st = st.replaceAll("[^CBD]", "") //CBD가 아닌 문자열 제거

 

startsWith() : 어떤 String이 특정 문자열로 시작하는지를 boolean 타입으로 리턴

 

String example = "BTC Antony";

System.out.println(example.startsWith("B"));
System.out.println(example.startsWith("BTC"));

//실행결과 
[ture]
[true]

 

boolean startsWith(String prefix)

 

--------------------

String 배열 쪼개기 : String.toCharArray()

 

 

 

두 String 이 같은지 비교할 때 : equals

 

 

 

숫자 배열만들기, String 비교

 

배열 -> 배열

 

int -> 배열로 바꾸는거 파악  

 

댓글