1️⃣ 특정 문자 제거하기
문제 설명
문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- letter은 길이가 1인 영문자입니다.
- my_string과 letter은 알파벳 대소문자로 이루어져 있습니다.
- 대문자와 소문자를 구분합니다.
입출력 예
my_string | letter | return |
"abcdef" | "f" | "abcde" |
"BCBdbe" | "B" | "Cdbe" |
💻 나의 풀이
class Solution {
public String solution(String my_string, String letter) {
StringBuilder sb = new StringBuilder();
for(int i=0; i<my_string.length(); i++) {
if(my_string.charAt(i) != letter.charAt(0)) { // my_string의 i번째 문자와 letter의 문자가 같지 않을 때
sb.append(my_string.charAt(i)); // 배열에 넣어준다
}
}
return sb.toString();
}
}
처음에는 StringBuilder를 사용해서 문제를 해결했습니다.
sb를 생성 후에 i가 0부터 my_string의 길이만큼 순회하게 만들고, if문과 charAt()을 사용해서 my_string의 i번째 문자와 letter의 문자를 비교하게 합니다. 그리고 일치하지 않을 경우에만 append()를 사용하여 문자들을 sb에 넣어줍니다.
최종적으로 toString()을 통해 sb를 출력하게 됩니다.
그런데 하다 보니 분명 문자열을 제거해주는 메서드가 있을텐데... 하는 생각이 떠오르게 되었어요.
class Solution {
public String solution(String my_string, String letter) {
return my_string.replace(letter, "");
}
}
문자열의 부가적인 기능 중 하나인 replace()를 사용하면 간단하게 해결되는 문제였습니다.
먼저 문자열.replace(a, b); 를 하게 되면 a값이 b값으로 변경됩니다. (원하는 문자 전체를 바꿔줍니다.)
그렇다면 제거는 어떻게 할까요?
바로 " " 공백으로 지정하면 됩니다.
그리하여 my_string.replace(letter, " "); 라는 코드가 나오게 됩니다.
2️⃣ 각도기
문제 설명
각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
- 예각 : 0 < angle < 90
- 직각 : angle = 90
- 둔각 : 90 < angle < 180
- 평각 : angle = 180
제한사항
- 0 < angle ≤ 180
- angle은 정수입니다.
입출력 예
angle | result |
70 | 1 |
91 | 3 |
180 | 4 |
💻 나의 풀이
class Solution {
public int solution(int angle) {
int answer = 0;
if(0<angle && angle<90){
answer = 1;
} else if (angle == 90){
answer = 2;
} else if (90<angle && angle<180){
answer = 3;
} else {
answer = 4;
}
return answer;
}
}
3️⃣ 양꼬치
문제 설명
머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 < n < 1,000
- n / 10 ≤ k < 1,000
- 서비스로 받은 음료수는 모두 마십니다.
입출력 예
n | k | result |
10 | 3 | 124,000 |
64 | 6 | 768,000 |
- 10인분을 시켜 서비스로 음료수를 하나 받아 총 10 * 12000 + 3 * 2000 - 1 * 2000 = 124,000원입니다.
- 64인분을 시켜 서비스로 음료수를 6개 받아 총 64 * 12000 + 6 * 2000 - 6 * 2000 =768,000원입니다.
💻 나의 풀이
class Solution {
public int solution(int n, int k) {
int answer = 0;
answer = 12000*n + 2000*(k-n/10);
return answer;
}
}
총가격은 양꼬치가격(12000)*양꼬치갯수(n) + 음료수가격(2000)*(음료수갯수k-양꼬치갯수n/10인분) 이 됩니다.
10인분에 음료수 하나씩 무료니까 총 시킨 양꼬치 n인분을 10인분으로 나눴을 때의 몫 만큼을 총 시킨 음료수 갯수에서 빼주고, 그 갯수에 음료수 가격을 곱합니다.
4️⃣ 짝수의 합
문제 설명
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
제한사항
- 0 < n ≤ 1000
입출력 예
n | result |
10 | 30 |
4 | 6 |
💻 나의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1; i<=n; i++){
if(i%2==0){
answer += i;
}
}
return answer;
}
}
i가 1부터 n까지 돌면서 2로 나눠서 떨어질 때(짝수)의 경우에만 모두 더해줍니다.
🔎 다른 사람의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=2; i<=n; i+=2){
answer+=i;
}
return answer;
}
}
i를 1씩 증가시켜서 2로 나누어 0일 경우를 더하는 것보다 어차피 짝수만 더하는 거니까 2부터 시작하여 2씩 더 해주는 방법이 있었습니다. 조금만 더 생각하면 떠올릴 수 있는 방법인데..이게 정말 한 끗 차이인데 다르다는 걸 느끼고 있슴다.....다들 정말 대단해
'프로그래머스 > 0단계' 카테고리의 다른 글
DAY9 수학, 문자열, 해시, 완전탐색, 조건문 (1) | 2023.11.25 |
---|---|
DAY8 배열, 구현, 수학 (1) | 2023.11.25 |
DAY6 문자열, 반복문, 출력, 배열, 조건문 (1) | 2023.11.23 |
DAY5 수학, 배열 (1) | 2023.11.23 |
DAY4 수학, 배열 (0) | 2023.11.22 |