본문 바로가기

혼자 코딩 공부하기

231201 자바 연습

프로그래머스 코딩 테스트 기초 문제

 

코드 처리하기

class Solution {
    public String solution(String code) {
        String answer = "";
        int mode = 0; // 기본 mode 값 지정
        
        for (int i = 0;i < code.length();i++){
            int c = code.charAt(i); // code 문자열의 단어를 ASCII 코드 값으로 저장
            if (mode == 0){
                if (c == 49){ // ASCII 코드 49 값은 '1'
                    mode = 1;
                } else if (i%2==0){
                    answer += code.charAt(i); // i 값이 짝수일 경우 answer 에 문자 추가
                }
            } else if (mode == 1){
                if (c == 49){
                    mode = 0;
                } else if (i%2 == 1){
                    answer += code.charAt(i); // i 값이 홀수일 경우 answer 에 문자 추가
                }
            }
        }
        return answer.equals("") ? "EMPTY" : answer; // 삼항 연산자, answer 가 비어있다면 "EMPTY", 아니면 answer 그대로 리턴
    }
}

 

등차수열 더하기

뭔가 너무 어렵게만 생각하는 듯한 등차수열 더하기

public int solution(int a, int d, boolean[] included) {
        int answer = 0;
        for (int i = a ; i <= (i + (included.length*(d-1))) ; i += d){
            int j = 0;
            String s = Boolean.toString(included[j]);
            if (s.equals("true")){
                answer += i;
            }
            j++;
        }
        asd = a + (d * 0);
        return answer;
    }

 

등차수열 구하기 - 내 기준 간단한 방법으로 해결

public int solution(int a, int d, boolean[] included) {
        int answer = 0;
        for(int i = 0 ; i < included.length;i++){
            String s = Boolean.toString(included[i]); // Boolean 의 값을 문자열로 변환
            if (s.equals("true")){ // 문자열이 true 와 같으면 answer 에 값을 더하기
                answer += a + (d * i); // ex) a=3, d=4, 3항이 true 일 경우 3 + (4 * 2)
            }
        }
        return answer;
    }

 

등차수열 구하기 - 더 쉬운 방법 발견

public int solution(int a, int d, boolean[] included) {
        int answer = 0;
        for(int i = 0 ; i < included.length;i++){
            while(included[i]){
            	answer = a + (d * i);
                break;
            }
        }
        return answer;
    }

 

주사위 게임 2

좀 더 압축할 수 있을 거 같은데 모르겠음

public int solution(int a, int b, int c) {
        int answer = 0;
        if (a == b && b != c){
            answer = (a+b+c) * (a*a + b*b + c*c);
        } else if (a == c && b != c){
            answer = (a+b+c) * (a*a + b*b + c*c);
        } else if (b == c && a != b){
            answer = (a+b+c) * (a*a + b*b + c*c);
        } else if (a == b && b == c){
            answer = (a+b+c) * (a*a + b*b + c*c) * (a*a*a + b*b*b + c*c*c);
        } else if (a != b && b != c){
            answer = a + b + c;
        }
        return answer;
    }

 

이어 붙인 수

public int solution(int[] num_list) {
        int answer = 0;
        String s1 = "";
        String s2 = "";
        for (int i = 0; i < num_list.length;i++){
            if(num_list[i] % 2 == 0){
                s1 += num_list[i];
            } else {
                s2 += num_list[i];
            }
        }
        answer = Integer.parseInt(s1) + Integer.parseInt(s2);
        return answer;
    }

 

수 조작하기1

switch case 로 풀고 싶었는데 못하다가

다른 분의 정답을 보고 깨달음

public int solution(int n, String control) {
        int answer = 0;
        
        for (int i = 0;i<control.length();i++){
            char c = control.charAt(i);
            if (c == 'w'){
                n += 1;
            } else if (c == 's'){
                n -= 1;
            } else if (c == 'd'){
                n += 10;
            } else if (c == 'a'){
                n -= 10;
            }
        }
        answer = n;
        return answer;
    }

 

수 조작하기2

public String solution(int[] numLog) {
        String answer = "";
        for (int i = 1 ; i < numLog.length ; i++){
            int a = numLog[i];
            int b = numLog[i-1];
            
            if (a - b == 1){
                answer += "w";
            } else if (a - b == -1){
                answer += "s";
            } else if (a - b == 10){
                answer += "d";
            } else if (a - b == -10){
                answer += "a";
            }
        }
        return answer;
    }

 

문자열의 뒤에 n글자

public String solution(String my_string, int n) {
        String answer = "";
        for(int i = my_string.length() - n ; i < my_string.length() ; i++) {
            char c = my_string.charAt(i);
            answer += c+"";
        }
        return answer;
    }

 

문자열 뒤에 n글자 - substring 이용하기

public String solution(String my_string, int n) {
        String answer = "";
        
        answer = my_string.substring(my_string.length() - n);
        
        return answer;
    }

 

정수 찾기

public int solution(int[] num_list, int n) {
        int answer = 0;
        
        for(int i : num_list){
            if (i == n){
                answer = 1;
                break;
            } else {
                answer = 0;
            }
        }
        return answer;
    }

 

글자 이어 붙여 문자열 만들기

public String solution(String my_string, int[] index_list) {
        String answer = "";
        
        for(int i : index_list){
            answer += my_string.charAt(i);
        }
        
        return answer;
    }

 

카운트 업

public int[] solution(int start_num, int end_num) {
        int[] answer = new int[end_num - start_num + 1];
        
        for (int i = 0 ; i < answer.length ; i++){
            answer[i] = start_num + i;
        }
        return answer;
    }

 

n 번째 원소까지

public int[] solution(int[] num_list, int n) {
        int[] answer = new int[n];
        for (int i = 0 ; i < n ; i++){
            answer[i] = num_list[i];
        }
        return answer;
    }

 

5명씩

public String[] solution(String[] names) {
        int a = 0;
        
        if (names.length % 5 == 0){
            a = names.length/5;
        } else if (names.length % 5 != 0){
            a = names.length / 5 + 1; // 5 명씩 묶고 인원이 남을 경우 + 1
        }
        
        String[] answer = new String[a];
        
        int b = 0;
        
        for(int i = 0 ; i < a ; i ++){
            answer[i] = names[b];
            b += 5; // 5 명씩 묶기 위해 추가 정수 변수 선언하여 5 씩 증가
        }

        return answer;
    }

 

n 보다 커질 때까지 더하기

public int solution(int[] numbers, int n) {
        int answer = 0;
        for(int i : numbers){
            answer += i;
            if(answer > n){
                break;
            }
        }
        return answer;
    }

 

첫 번째로 나오는 음수

public int solution(int[] num_list) {
        int answer = 0;
        for(int i : num_list){
            if (i < 0){
                return answer;
            }
            answer++;
        }
        
        return answer == num_list.length ? -1 : answer;
    }

 

n개 간격의 원소들

public int[] solution(int[] num_list, int n) {
        int[] answer = new int[(num_list.length-1) / n + 1];
        int a = 0;
        for (int i = 0 ; i < answer.length ; i++){
            answer[i] = num_list[a];
            a+=n;
        }
        return answer;
    }

 

특정한 문자를 대문자로 바꾸기

public String solution(String my_string, String alp) {
        String answer = "";
        for(int i = 0;i < my_string.length();i++){
            if (my_string.charAt(i) == alp.charAt(0)){ // 만약 alp 글자가 my_string 글자와 같다면
                answer += Character.toString(my_string.charAt(i)).toUpperCase(); // my_string 글자를 대문자로 바꿈
            } else {
                answer += my_string.charAt(i);
            }
        } 
        return answer;
    }

 

조건에 맞게 수열 변환하기 1

public int[] solution(int[] arr) {
        int[] answer = new int[arr.length];
        for(int i = 0 ; i < arr.length ; i++){
            if (arr[i] >= 50 && arr[i] % 2 == 0){
                answer[i] = arr[i] / 2;
            } else if (arr[i] % 2 != 0 && arr[i] < 50){
                answer[i] = arr[i] * 2;
            } else {
                answer[i] = arr[i];
            }
        }
        return answer;
    }

 

배열에서 대소문자 변환하기

public String[] solution(String[] strArr) {
        String[] answer = new String[strArr.length];
        for(int i = 0 ; i < answer.length;i++){
            if (i % 2 == 0){
                answer[i] = strArr[i].toLowerCase();
            } else {
                answer[i] = strArr[i].toUpperCase();
            }
        }
        return answer;
    }

 

문자열 정수의 합

public int solution(String num_str) {
        int answer = 0;
        for (int i = 0 ; i < num_str.length();i++){
            answer += num_str.charAt(i) - 48; // 숫자 0 의 ASCII code 가 48
        }
        return answer;
    }

 

 

'혼자 코딩 공부하기' 카테고리의 다른 글

혼자 자바 공부하기  (0) 2023.11.29