programmers Day14

Hwani·2024년 5월 20일

프로그래머스 DAY 1~25

목록 보기
14/51

문제 - 가까운 수

풀이

import java.util.*;

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        Arrays.sort(array);
        
        for(int i = 1 ; i < array.length ; i++){
            if(Math.abs(n-array[0]) > Math.abs(n-array[i])){
                array[0] = array[i];
            }
        }
        answer = array[0];
        return answer;
    }
}

설명

  • 배열을 정렬한다.
  • Math.abs 함수를 이용하여 n에서 배열을 순회하면서 절대값을 비교한다.
  • 가장 작은 절대값을 array[0]에 대입한다.
  • array[0]을 answer에 대입하고 리턴한다.

문제 - 369게임

풀이

class Solution {
    public int solution(int order) {
        int answer = 0;
        
        String orderStr = Integer.toString(order);
        for (char c : orderStr.toCharArray()) {
            if (c == '3' || c == '6' || c == '9') {
                answer++;
            }
        }
        
        return answer;
    }
}

설명

  • 매개변수 order를 String으로 변환한다.
  • String 타입의 orderStr을 char타입의 배열로 전환하여 하나씩 비교한다.
  • 3,6,9가 존재한다면 answer를 1씩 증가시킨 후 리턴한다.

문제 - 암호해독

풀이

class Solution {
    public String solution(String cipher, int code) {
        StringBuilder sb = new StringBuilder();

        for (int i = code-1; i < cipher.length(); i += code) {
            sb.append(cipher.charAt(i));
        }
        
        return sb.toString();
    }
    
}

설명

이 문제는 for문의 루프를 설정하는데 어려웠다.

  • 시작값을 code - 1로 code가 4라면 인덱스번호 3에서 시작하게한다.
  • 종료 조건은 i가 ciper의 길이보다 작을 때까지 반복한다.
  • 증감값을 code 간격으로 인덱스를 증가시킨다.

문제 - 대문자와 소문자

풀이

import java.util.Arrays;

class Solution {
    public String solution(String my_string) {
        String[] split = my_string.split("");

        for (int i = 0; i < split.length; i++) {
            if (Character.isLowerCase(split[i].charAt(0))) {
                split[i] = split[i].toUpperCase();
            } else {
                split[i] = split[i].toLowerCase();
            }
        }

        return String.join("", split);
    }
}

설명

이 문제는 마지막 리턴할 때 split.toString(); 을 하다가 오류나서 구글링 후 방법을 찾았다.

  • 매개변수 my_string을 split한다.
  • for문으로 하나씩 대조하여 소문자라면 대문자로 대문자라면 소문자로 변환한다.
  • String.join("",split); 은 배열의 요소를 하나의 문자로 결합하여 리턴한다.
profile
개발자될거야

0개의 댓글