programmers Day24

Hwani·2024년 5월 31일

프로그래머스 DAY 1~25

목록 보기
24/51
post-thumbnail

문제 - 치킨 쿠폰

풀이

class Solution {
    public int solution(int chicken) {
        int answer = 0;

        while (chicken >= 10) {
        	// 현재 치킨 수로 받을 수 있는 서비스 치킨의 수
            answer += chicken / 10;
            // 새로운 치킨 수
            chicken = (chicken / 10) + (chicken % 10);
        }

        return answer;
    }
}

설명

  • 치킨의 수가 10개 이상이어야 서비스 치킨 1마리가 주어지니까 조건으로 설정
  • 현재 치킨 수에서 10으로 나눈 건 서비스 치킨의 수이니까 answer에 더해준다.
    예를 들어 chicken = 1081 이라면 쿠폰의 수도 1081이다.
    1081 / 10 = 108 나머지(쿠폰의 수) 1
    108 / 10 = 10 나머지(쿠폰의 수) 8
    10 / 10 = 1(쿠폰의 수) 1+8+1 해서 1개의 치킨을 더 시킬 수 있으니까 120이다.

문제 - 이진수 더하기

풀이

class Solution {
    public String solution(String bin1, String bin2) {
        int num1 = Integer.parseInt(bin1,2);
        int num2 = Integer.parseInt(bin2,2);

        return Integer.toBinaryString(num1+num2);
    }
}

설명

이 문제를 통해 Integer.ParseInt의 새로운 사용법을 배웠다. int형변환으로만 사용했었는데 특정진수로 해석하는 사용으로도 쓰이는 걸 알게되었다.

  • 2진수 문자를 10진수 int로 형변환을 한다.
  • 형변환 된 숫자를 더하고 2진수 문자로 다시 변환하여 리턴한다.

문제 - A로 B 만들기

풀이

import java.util.*;

class Solution {
    public int solution(String before, String after) {
        char[] arr1 = before.toCharArray();
        char[] arr2 = after.toCharArray();
        
        Arrays.sort(arr1);
        Arrays.sort(arr2);
        
        String str1 = new String(arr1);
        String str2 = new String(arr2);
        
        return str1.equals(str2) ? 1 : 0;
    }
}

설명

  • 같은 문자열로 구성되었는지 확인하기 위해 char 배열로 생성
  • 생성된 배열을 정렬
  • 정렬한 배열을 String으로 전환
  • 전환된 String을 같은지 비교한다.

문제 - K의 개수

풀이

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        String strK = String.valueOf(k);

        for (int l = i; l <= j; l++) {
            String Value = String.valueOf(l);
            if (Value.contains(strK)) {
                String[] array = Value.split("");
                for (String alpha : array) {
                    if (alpha.equals(strK)) answer++;
                }
            }
        }
        return answer;
    }
}

설명

i부터 j까지의 숫자 중 k 가 몇번 나오는지 계산하는 문제이다.

  • for문으로 i부터 j까지 루프 설정
  • contains를 사용하기 위해 String으로 k와 l을 변환한다.
  • i~j 값을 split하여 배열에 담아준다.
  • 배열에 있는 값중 k 와 같은 값이 있다면 answer를 증가시킨 후 리턴한다.
profile
개발자될거야

0개의 댓글