[프로그래머스]

박경희·2023년 12월 30일

코딩테스트

목록 보기
11/69

문제1 - 문자열 내 p와 y의 개수

class Solution {
     boolean solution(String s) {
         int p_count = 0, y_count = 0;
        String lowerCase = s.toLowerCase();
        for (int i = 0; i < s.length(); i++) {
            char c = lowerCase.charAt(i);
            if (c == 'p') {
                p_count++;
            }
            if (c == 'y') {
                y_count++;
            }
        }
        boolean answer = true;
        if (p_count != y_count) {
            answer = false;
        }
        return answer;
    }
}

다른풀이

for (int i = 0; i < s.length(); i++) {

            if (s.charAt(i) == 'p')
                count++;
            else if (s.charAt(i) == 'y')
                count--;
        }

이렇게 변수를 하나만 두고 사용할 수도 있다.


문제2

 public int solution(int num1, int num2) {
        int answer = 0;
        if(num1 == num2) {
            answer = 1;
        }else {
            answer = -1;
        }
        return answer;
    }

다른풀이

 return num1 == num2 ? 1 : -1;

삼항 연산자를 잘 떠올려보자~


문제3 - num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return

  public int solution(int num1, int num2) {
      double v = (double) num1 / (double) num2;
      double v1 = v * 1000;
      return (int) v1;
    }

다른풀이

 return num1 * 1000 / num2;

순서만 바꿨다면 단 한줄로 끝나는 문제였다.


문제4 - 각도기

public int solution(int angle) {
         if (0 < angle && angle < 90) {
            return 1;
        } else if (angle == 90) {
            return 2;
        } else if (90 < angle && angle <180) {
            return 3;
        }else  {
            return 4;
        }
    }

다른풀이- 삼항

return angle == 180 ? 4 : angle == 90 ? 2 : angle < 90 ? 1 : angle < 180 ? 3 : 0;

문제5 - 짝수 합

방법1

 for(int i=2; i<=n; i+=2){
            answer+=i;
        }

방법2

public int solution(int n) {
        return IntStream.rangeClosed(0, n)
            .filter(e -> e % 2 == 0)
            .sum();
    }

문제6- 평균

방법1

import java.util.Arrays;

  public static double solution(int[] numbers) {
        int sum = Arrays.stream(numbers).sum();
        return (double) sum / numbers.length;
    }

방법2

return Arrays.stream(numbers).average().orElse(0);
  • .orElse(0) -> 주어진 값이 null이 아닌 경우 주어진 값을 되돌려주고 null인 경우 인수(0)을 돌려준다.

0개의 댓글