카테고리 없음

4월 13일 목요일 TIL 회고록

tft4rollz 2023. 4. 13. 22:27

즐거운 코딩테스트


프로그래머스 Lv 1. 없는 숫자 구하기


문제 설명 , 제한사항, 입출력 예

풀이

  class Solution {
    public int solution(int[] numbers) {
      int answer = 0;
      // 0부터 9까지 모두 합한 수 45를 선언한다.
      int num = 45;
      // numbers[i]의 값을 넣을 num2를 선언한다.
      int num2 = 0;
      // for문을 사용해 numbers[i]번째 값을 num2에 넣는다.
      for (int i = 0 ; i < numbers.length; i++) {
        num2 += numbers[i];
      }
      // 모두 합한 수와 numbers의 합을 빼면 없는 숫자의 합이 나온다.
      answer = num - num2;
      return answer;
    }
  }

어제 풀다가 포기했던 문제다...

없는 숫자를 직접 구해서 해보려고 했는데 내 머리로는 도저히.. 나오지 않아 문득 모두 더한 값에서 numbes의 합을 빼면 답이 나오지 않을까? 했는데 진짜 나와서 정말 기분 좋았다 ㅋㅋㅋ


프로그래머스 Lv.1 예산


문제 설명 , 제한사항, 입출력 예

풀이

import java.util.Arrays;

class Solution {
    public int solution(int[] d, int budget) {
      int answer = 0;
      // d[i]번째를 저장할 정수형 num을 선언한다.
      int num = 0;
      // d를 오름차순으로 정렬한다. ex) {1,2,3,4,5}
      Arrays.sort(d);
      // d.length만큼 반복
      for (int i = 0 ; i < d.length; i++) {
      // d[i]번째를 num에 더해서 저장한다.
        num += d[i];
        // num이 budget보다 작거나 같으면 answer를 1 카운트한다.
        if (num <= budget) {
          answer++;
        }

      }
      return answer;
    }
  }

두시간동안 고민하고 겨우 풀었다 ㅋㅋㅋ

문제를 깊게 이해하려다 보니까 오히려 더 어려워진 것 같았다.


프로그래머스 LV. 1 숫자 문자열과 영단어


문제 설명 , 제한사항, 입출력 예

풀이

class Solution {

    public int solution(String s) {
      int answer = 0;
      // 문자열 배열 number를 만든다.
      String[] number= {"0","1","2","3","4","5","6","7","8","9"};
      // 문자열 배열 list를 만든다.
      String[] list = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight",
          "nine"};
      // i가 10까지 도는 반복문을 만든다. (0,1,2,3,4,5,6,7,8,9 = 총 10개)
      for (int i = 0; i < 10; i++) {
      // replaceAll(기존 문자, 바뀔 문자)를 사용해서 문자열들을 치환해준다.
      // ex) "onetwothree" = "123"
      // list[i]번째들을 number[i]번째로 치환한다.
        s = s.replaceAll(list[i],number[i]);
      }
      // Integer.parseInt()를 사용해서 문자열을 숫자로 변환해준후 값을 answer에 넣어준다.
      // ex) 문자열 치환 후 "123" 이렇게 되있는 것들을 parseInt를 사용하면 123으로 변환된다.
       answer = Integer.parseInt(s);
      return answer;
    }
  }

카카오 문제였어서 그런지 많이 어려워서 힌트를 보면서 만들었다.

replaceAll, parseInt의 존재를 거의 까먹고 있었는데 이렇게 편한 기능이 있단걸 다시 한번 깨닫게 되었다 ㅋㅋㅋ 이제 안까먹어야겠다.


부족한 금액 계산하기


문제 설명 , 제한사항, 입출력 예

풀이

  class Solution {
    public long solution(int price, int money, int count) {
      long answer = 0;
      // 총 놀이금액의 값을 담을 long 타입 re를 선언했다.
      long re = 0;
      // for문을 이용해 총 놀이금액의 값을 구했다.
      // count는 무조건 1부터 시작하니 i는 1부터 시작하게 만들었다.
     for (int i = 1 ; i <= count ; i++) {
     // price에 i를 곱한 값을 re에 더한 후 넣었다.
       re += price * i;
     }
     // 만약 총 놀이금액의 값이 money의 값과 같거나 작으면 0을 리턴하게 만들었다.
       if (re <= money) {
       return 0;
     }
     // 총 놀이금액의 값과 가지고 있던 money 값을 뺀 값을 answer에 넣었다.
      answer = re - money;
      return answer;
    }
  }

count는 1배 2배 3배 순차적으로 올라가야하는데 반복문으로 만들면 편하게 오를 것 같았다.

그리고 price에 i를 곱해주면 놀이기구의 이용료가 깔끔하게 나온다. 그 값들을 합쳐서 현재 가지고 있는 돈 money에서 빼면 값이 나온다.

계속 테스트 4가 틀려서 문제 설명을 자세히 보니 금액이 부족하지 않으면 0을 리턴하라고 적혀있어 내가 만든 코드를 보니

총 놀이기구 이용료랑 현재 가지고 있는 돈이랑 같으면 0을 출력하게 만들어져만 있고 (!!값이 남으면!!) 0을 리턴하도록 만들어져 있지 않아 위에 코드대로 수정했더니 바로 성공했다ㅋㅋㅋ... 진짜 합격 표시 나올때 기분이 너무 좋다 보람차고..