본문 바로가기

코딩테스트/JAVA

[JAVA] 프로그래머스 - 기초문제 Day4 ~ Day6

https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc&languages=java

 

코딩 기초 트레이닝 | 프로그래머스 스쿨

프로그래밍 언어를 처음 접하거나 프로그래밍 언어에 익숙해지고 싶다면? 코딩 역량을 탄탄하게 길러주는 코딩 기초 트레이닝으로 차근차근 코딩에 대한 기초 감각을 길러 보세요.

school.programmers.co.kr

 

Day 4 - 연산, 조건문

  • n의 배수
class Solution {
    public int solution(int num, int n) {
        
        return (num % n == 0) ? 1 : 0;
    }
}

 

 

 

  • 공배수
class Solution {
    public int solution(int number, int n, int m) {
        return (number % n == 0 && number % m == 0 ) ? 1:0;
    }
}

 

 

  • 홀짝에 따라 다른 값 반환하기
import java.util.stream.IntStream;

class Solution {
    public int solution(int n) {
        return n%2==0?
            IntStream.range(0,n+1).filter(num-> num % 2 == 0).map(num-> num*num).sum(): 
            IntStream.range(0,n+1).filter(num-> num % 2 == 1).sum();
    }
}

 

 

  • 조건 문자열
class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        boolean answer=true;
        if(ineq.equals("<")){
            if(eq.equals("=")){
                answer = (n<=m);
            }else{
                answer = (n<m);
            }
        }else{
           if(eq.equals("=")){
                answer = (n>=m);
            }else{
                answer = (n>m);
            } 
        }
        return answer == true?1:0;
    }
}

 

 

  • flag에 따라 다른 값 반환하기
class Solution {
    public int solution(int a, int b, boolean flag) {
        return flag?a+b:a-b;
    }
}

 

 

 


Day 5 - 조건문

  • 코드 처리하기
class Solution {
    public String solution(String code) {
        String answer = "";
        int mode = 0;
        for(int idx=0;idx<code.length();idx++){
            if(mode == 0){
                if(! (code.charAt(idx) == '1')){
                    if(idx %2 == 0) {answer+=code.charAt(idx);}
                }else{
                    mode = 1;
                }
            }else{
                if(! (code.charAt(idx) == '1')){
                    if(idx %2 != 0) {answer+=code.charAt(idx);}
                }else{
                    mode = 0;
                }
            }
        }
        
        return answer.equals("")?"EMPTY":answer;
    }
}

 

 

  • 등차수열의 특정한 항만 더하기
class Solution {
    public int solution(int a, int d, boolean[] included) {
        int answer = 0;
        
        for(int i=0;i<included.length;i++){
            if(included[i]){
                answer+=(d*i+a);
            }
        }
        
        return answer;
    }
}
import java.util.stream.IntStream;

class Solution {
    public int solution(int a, int d, boolean[] included) {
        
    return IntStream.range(0,included.length).map(idx -> included[idx]?a+(idx*d):0).sum();
    
    }
}

 

 

  • 주사위 게임 2
import java.util.*;

class Solution {
    public int solution(int a, int b, int c) {
        
        if(a==b && b==c){
            return (int) ((a+b+c)*(Math.pow(a,2)+Math.pow(b,2)+Math.pow(c,2))*(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)));
        }else if(a==b || b==c || a==c){
            return (int) ((a+b+c)*(Math.pow(a,2)+Math.pow(b,2)+Math.pow(c,2)));
        }else{
            return (a+b+c);
        }
        
    }
}

 

 

  • 원소들의 곱과 합
import java.util.stream.*;
import java.util.Arrays;

class Solution {
    public int solution(int[] num_list) {
        return Math.pow(Arrays.stream(num_list).sum(),2) > Arrays.stream(num_list).reduce(1,(a,b)->a*b)?1:0;
    }
}

 

 

  • 이어 붙인 수
import java.util.stream.*;
import java.util.Arrays;

class Solution {
    public int solution(int[] num_list) {
        return Integer.parseInt(Arrays.stream(num_list).filter(x->x%2==0).mapToObj(String::valueOf).collect(Collectors.joining())) 
            + Integer.parseInt(Arrays.stream(num_list).filter(x->x%2!=0).mapToObj(String::valueOf).collect(Collectors.joining()));
    }
}

 

 


Day 6 - 조건문, 반복문

  • 마지막 두 원소
import java.util.Arrays;
import java.util.stream.*;
import java.util.*;

class Solution {
    public int[] solution(int[] num_list) {
        
        List<Integer> tmp = Arrays.stream(num_list).boxed()
            .collect(Collectors.toList());
            
            tmp.add(num_list[num_list.length-2] >= num_list[num_list.length-1] ? num_list[num_list.length-1]*2 : num_list[num_list.length-1] - num_list[num_list.length-2]);
        
        return tmp.stream().mapToInt(Integer::intValue).toArray();
    }
}
 

 

  • 수 조작하기 1
class Solution {
    public int solution(int n, String control) {
        
        for(char c : control.toCharArray()){
            if(c=='w'){n+=1;}
            else if(c=='s'){n-=1;}
            else if(c=='d'){n+=10;}
            else{n-=10;}
        }
        
        return n;
    }
}
class Solution {
    public int solution(int n, String control) {
  
        return control.chars().reduce(n,(acc,c) -> acc + (c=='w'?1 : c=='s' ? -1 : c == 'd' ? 10 : -10));
    }
}

 

 

  • 수 조작하기 2
import java.util.Arrays;
import java.util.*;

class Solution {
    public String solution(int[] numLog) {
        
        String answer = "";
        
        for(int i=0;i<numLog.length-1;i++){
            switch (numLog[i+1] - numLog[i]){
            case 1:
                answer+="w";
                break;
            case -1:
                answer+="s";
                break;
            case 10:
                answer+="d";
                break;
            case -10:
                answer+="a";
                break;
            }
        }
        
        return answer;
    }
}

 

 

  • 수열과 구간 쿼리 3
class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        
        for(int[] q : queries){
            int tmp = arr[q[0]];
            arr[q[0]] =  arr[q[1]];
            arr[q[1]] = tmp;
        }
        
        return arr;
    }
}

 

 

  • 수열과 구간 쿼리 2
class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = new int[queries.length];
        
        for(int i=0;i<queries.length;i++){
            int[] q = queries[i];
            int m = 10000001;
            for(int j=q[0];j<=q[1];j++){
                if(arr[j] > q[2] && arr[j] < m){
                    m = arr[j];
                }
            }
            answer[i] = m==10000001?-1:m;
        }
        
        return answer;
    }
}