본문 바로가기

코딩테스트/JAVA

[JAVA] 프로그래머스 - 기초문제 Day8 ~ Day9

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

 

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

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

school.programmers.co.kr

 

 

Day 8 - 조건문, 문자열

  • 간단한 논리 연산
class Solution {
    public boolean solution(boolean x1, boolean x2, boolean x3, boolean x4) {
        return (x1||x2) && (x3||x4) ;
    }
}

 

 

 

import java.util.*;

class Solution {
    public int solution(int a, int b, int c, int d) {

        if(a==b && b==c && c==d) return 1111*a;
        
        if(a==b && b==c) return (int) Math.pow(10*a+d,2);
        if(a==c && c==d) return (int) Math.pow(10*a+b,2);
        if(a==b && b==d) return (int) Math.pow(10*a+c,2);
        if(b==d && b==c) return (int) Math.pow(10*b+a,2);
        
        if(a==b && c==d) return (a+c)*Math.abs(a-c);
        if(a==c && b==d) return (b+c)*Math.abs(b-c);
        if(b==c && a==d) return (a+c)*Math.abs(a-c);
        
        if(a==b) return c*d;
        if(a==c) return b*d;
        if(a==d) return b*c;
        if(b==c) return a*d;
        if(b==d) return a*c;
        if(c==d) return a*b;
        
        return Math.min(Math.min(a,b),Math.min(c,d));
        
    }
}
import java.util.Arrays;

class Solution {
    public int solution(int a, int b, int c, int d) {

        int[] dice = { a, b, c, d };
        Arrays.sort(dice);

        int ans = 0;

        if (dice[0] == dice[3]) {
            ans = 1111 * dice[3];
        } else if (dice[0] == dice[2] || dice[1] == dice[3]) {
            ans = (int) Math.pow(dice[1] * 10 + (dice[0] + dice[3] - dice[1]), 2);
        } else if (dice[0] == dice[1] && dice[2] == dice[3]) {
            ans = (dice[0] + dice[3]) * (dice[3] - dice[0]);
        } else if (dice[0] == dice[1]) {
            ans = dice[2] * dice[3];
        } else if (dice[1] == dice[2]) {
            ans = dice[0] * dice[3];
        } else if (dice[2] == dice[3]) {
            ans = dice[0] * dice[1];
        } else {
            ans = dice[0];
        }

        return ans;
    }
}

 

 

 

  • 글자 이어 붙여 문자열 만들기
class Solution {
    public String solution(String my_string, int[] index_list) {
        String answer = "";
        
        char[] c = my_string.toCharArray();
        for(int i : index_list){
            answer+=String.valueOf(c[i]);
        }
        
        return answer;
    }
}
class Solution {
    public String solution(String my_string, int[] index_list) {

        StringBuilder sb = new StringBuilder();

        for (int idx : index_list)
            sb.append(my_string.charAt(idx));

        return sb.toString();
    }
}

 

 

 

  • 9로 나눈 나머지
import java.util.*;
import java.math.BigInteger;
class Solution {
    public int solution(String number) {
        return (new BigInteger(number).remainder(BigInteger.valueOf(9))).intValue();
    }
}
class Solution {
    public int solution(String number) {
        return number.chars().map(c -> (c - '0') % 9).sum() % 9;
    }
}

 

 

 

  • 문자열 여러 번 뒤집기
class Solution {
    public String solution(String my_string, int[][] queries) {
        String answer = "";
        
        for(int[] q : queries){
            answer=my_string.substring(0,q[0]);
            for(int i=q[1];i>=q[0];i--){
                answer+=String.valueOf(my_string.charAt(i));
            }
            answer+=my_string.length()==q[1]?"":my_string.substring(q[1]+1,my_string.length());
            my_string = answer;
        }
        
        return my_string;
    }
}

 


Day 9 - 문자열 

  • 배열 만들기 5
import java.util.*;
class Solution {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        List<Integer> answer = new ArrayList<>();
        
        for(String str : intStrs){
            int t = Integer.parseInt(str.substring(s,s+l));
            if(k<t) answer.add(t);
        }
        
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

 

  • 부분 문자열 이어 붙여 문자열 만들기
class Solution {
    public String solution(String[] my_strings, int[][] parts) {
        String answer = "";
        
        for(int i=0;i<parts.length;i++){
            answer+=my_strings[i].substring(parts[i][0],parts[i][1]+1);
        }
        
        return answer;
    }
}
import java.util.stream.*;

class Solution {
    public String solution(String[] myStrings, int[][] parts) {
        return IntStream.range(0, myStrings.length).mapToObj(i -> myStrings[i].substring(parts[i][0], parts[i][1] + 1)).collect(Collectors.joining());
    }
}

 

 

 

  • 문자열의 뒤의 n글자
class Solution {
    public String solution(String my_string, int n) {    
        return my_string.substring(my_string.length()-n,my_string.length());
    }
}
 

 

 

  • 접미사 배열
import java.util.*;
class Solution {
    public String[] solution(String my_string) {
        List<String> answer = new ArrayList<String>();
        
        for(int i=0;i<=my_string.length()-1;i++){
            answer.add(my_string.substring(i));
        }
        
        Collections.sort(answer);
        
        return answer.toArray(new String[0]);
    }
}
 
import java.util.*;
import java.util.stream.IntStream;

class Solution {
    public String[] solution(String myString) {
        return IntStream.range(0, myString.length()).mapToObj(myString::substring).sorted().toArray(String[]::new);
    }
}

 

 

 

  • 접미사인지 확인하기
import java.util.*;
class Solution {
    public int solution(String my_string, String is_suffix) {
        List<String> list = new ArrayList<>();
        
        for(int i=0;i<my_string.length();i++){
            list.add(my_string.substring(i));
        }
        
        return list.contains(is_suffix)?1:0;
    }
}
class Solution {
    public int solution(String myString, String isSuffix) {
        return myString.endsWith(isSuffix) ? 1 : 0;
    }
}