[프로그래머스] 코딩테스트 입문 - Day 7

dBoyeob·2023년 5월 28일
0

Problem-Solving

목록 보기
10/10

[Day7] 문자열, 조건문, 수학, 반복문

Q1. 특정 문자 제거하기

Question
문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

Constraints

  • 1 ≤ my_string의 길이 ≤ 100
  • letter은 길이가 1인 영문자입니다.
  • my_string과 letter은 알파벳 대소문자로 이루어져 있습니다.
  • 대문자와 소문자를 구분합니다.

Thinking

  • my_string에서 letter 제거 -> my_string 중 letter가 아닌 문자를 answer 문자열에 추가

Answer

class Solution {
    public String solution(String my_string, String letter) {
        String answer = "";
        
        for(int i=0; i<my_string.length(); i++){
            if(!(my_string.charAt(i) == letter.charAt(0) )) {
                answer += my_string.charAt(i);
            }
        }
        return answer;
    }
}
  • letter는 길이가 1인 영문자인데, String type으로 입력받기 때문에 처음에 문자열과 문자를 비교하는 식이 만들어져서 오류가 발생했다. -> 어차피 길이가 1이기 때문에, charAt(0)으로 char과 char을 비교하도록 변경
  • (다른 사람의 풀이) answer = my_string.replace(letter, "") -> 천재일까 ?

Q2. 각도기

Question

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

  • 예각 : 0 < angle < 90
  • 직각 : angle = 90
  • 둔각 : 90 < angle < 180
  • 평각 : angle = 180

Constraints

  • 0 < angle ≤ 180
  • angle은 정수입니다.

Thinking
( 예각 = 1 ) 은 ( 90으로 나눈 몫 )이 ( 0 )이고, ( 90으로 나눈 나머지 )가 ( 있 )다.
( 직각 = 2 ) 은 ( 90으로 나눈 몫 )이 ( 1 )이고, ( 90으로 나눈 나머지 )가 ( 없 )다.
( 둔각 = 3 ) 은 ( 90으로 나눈 몫 )이 ( 1 )이고, ( 90으로 나눈 나머지 )가 ( 있 )다.
( 평각 = 4 ) 은 ( 90으로 나눈 몫 )이 ( 2 )이고, ( 90으로 나눈 나머지 )가 ( 없 )다.

if( 90으로 나눈 나머지 )가 ( 있 )으면, 각은 ( 90*2 )
else( 90으로 나눈 나머지 )가 ( 없 )으면 각은 ( 90*2 + 1 )

  • 처음엔 if문으로 1, 2, 3, 4의 경우를 다 하려고 했는데, 한 줄로 구할 수 있을 것 같아서 네 가지 경우를 나눠서 식을 세우고 문제를 해결했다.

Answer

class Solution {
    public int solution(int angle) {
        int answer = 0;
        
        answer = (angle/90)*2 + ((angle%90==0)? 0: 1);
        
        return answer;
    }
}
  • (다른 사람의 풀이) return angle == 180 ? 4 : angle < 90 ? 1 : angle == 90 ? 2 : angle > 90 ? 3 : 0;
    똑같이 한줄로 풀었는데, 이 코드의 가독성이 더 좋은 것 같다. 무조건 짧다고 더 좋은 코드는 아닌 것 같다.

Q3. 양꼬치

Question
머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.

Constraints

  • 0 < n < 1,000
  • n / 10 ≤ k < 1,000
  • 서비스로 받은 음료수는 모두 마십니다.

Thinking
total = ( 양꼬치 가격 ) ( 수량 ) + ( 음료수 가격 ) ( 수량 - 서비스 수량 )

Answer

class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        answer = 12000*n + 2000*(k-n/10);
        return answer;
    }
}

Q4. 짝수의 합

Question
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

Constraints
0 < n ≤ 1000

Thinking
반복문, 2씩 증가

Answer

class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i=2; i<=n; i+=2) answer += i;
        return answer;
    }
}
  • (다른 사람의 풀이) return IntStream.rangeClosed(0, n).filter(e -> e % 2 == 0).sum(); -> 스트림 스트림 스트림 공부 !!
profile
HGU Computer Science 21 && CRA 21-1 👨🏻‍💻

0개의 댓글