1️⃣ 숫자 찾기
문제 설명
정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 < num < 1,000,000
- 0 ≤ k < 10
- num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.
입출력 예
num | K | result |
29183 | 1 | 3 |
232443 | 4 | 4 |
123456 | 7 | -1 |
입출력 예 #1
- 29183에서 1은 3번째에 있습니다.
입출력 예 #2
- 232443에서 4는 4번째에 처음 등장합니다.
입출력 예 #3
- 123456에 7은 없으므로 -1을 return 합니다.
💻 나의 풀이
class Solution {
public int solution(int num, int k) {
int answer = 0;
String s = Integer.toString(num); // num을 문자열로
String[] array = s.split("");
for(int i=0; i<array.length; i++){
if(array[i].equals(Integer.toString(k))){
return i+1;
}
}
return -1;
}
}
비교해야되니까 정수 num을 문자열로 바꿔주고, split을 사용해 공백으로 구분해서 배열 array에 넣어줍니다.배열을 반복하면서 배열의 i번째가 정수 k를 문자열로 변환한 Integer.toString(k)와 같다면 i+1값을 반환해줍니다. (자리수이기 때문에 +1)만약 같은 값이 없을 경우 -1을 리턴합니다.
🔎 다른 사람의 풀이
class Solution {
public int solution(int num, int k) {
return ("-" + num).indexOf(String.valueOf(k));
}
}
- 라는 문자를 하나 추가해서 인덱스를 0이 아닌 1부터 세는 방법입니다.놀랍습니다...🤦♀️
2️⃣ n의 배수 고르기
문제 설명
정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 10,000
- 1 ≤ numlist의 크기 ≤ 100
- 1 ≤ numlist의 원소 ≤ 100,000
입출력 예
n | numlist | result |
3 | [4, 5, 6, 7, 8, 9, 10, 11, 12] | [6, 9, 12] |
5 | [1, 9, 3, 10, 13, 5] | [10, 5] |
12 | [2, 100, 120, 600, 12, 12] | [120, 600, 12, 12] |
입출력 예 #1
- numlist에서 3의 배수만을 남긴 [6, 9, 12]를 return합니다.
입출력 예 #2
- numlist에서 5의 배수만을 남긴 [10, 5]를 return합니다.
입출력 예 #3
- numlist에서 12의 배수만을 남긴 [120, 600, 12, 12]를 return합니다.
💻 나의 풀이
class Solution {
public int[] solution(int n, int[] numlist) {
int a = 0;
for(int i=0; i<numlist.length; i++){
if(numlist[i] % n == 0){
a++;
}
}
int[] answer = new int[a];
int k = 0;
for(int i=0; i<numlist.length; i++){
if(numlist[i] % n == 0){
answer[k] = numlist[i];
k++;
}
}
return answer;
}
}
3️⃣ 자릿수 더하기
문제 설명
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ n ≤ 1,000,000
입출력 예
n | result |
1234 | 10 |
930211 | 16 |
입출력 예 #1
- 1 + 2 + 3 + 4 = 10을 return합니다.
입출력 예 #2
- 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.
💻 나의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
String s = Integer.toString(n);
String[] array = s.split("");
for(int i=0; i<array.length; i++){
answer += Integer.parseInt(array[i]);
}
return answer;
}
}
숫자를 문자열로 바꿔준 후에 문자열 배열 array로 만들어줍니다.
배열 array 길이만큼 반복문을 돌면서 array[i]를 정수형으로 바꾸어서 answer에 더해줍니다.
🔎 다른 사람의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
while(n>0){
answer+=n%10;
n/=10;
}
return answer;
}
}
4️⃣ OX퀴즈
문제 설명
덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
- 1 ≤ quiz의 길이 ≤ 10
- X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
- X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
- -10,000 ≤ X, Y ≤ 10,000
- -20,000 ≤ Z ≤ 20,000
- [연산자]는 + 와 - 중 하나입니다.
입출력 예
quiz | result |
["3 - 4 = -3", "5 + 6 = 11"] | ["X", "O"] |
["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] | ["O", "O", "X", "O"] |
입출력 예 #1
- 3 - 4 = -3 은 틀린 수식이므로 "X", 5 + 6 = 11 은 옳은 수식이므로 "O" 입니다. 따라서 ["X", "O"]를 return합니다.
입출력 예 #2
- 19 - 6 = 13 은 옳은 수식이므로 "O", 5 + 66 = 71 은 옳은 수식이므로 "O", 5 - 15 = 63 은 틀린 수식이므로 "X", 3 - 1 = 2는 옳은 수식이므로 "O" 따라서 ["O", "O", "X", "O"]를 return합니다.
💻 나의 풀이
class Solution {
public String[] solution(String[] quiz) {
String[] answer = new String[quiz.length];
for (int i = 0; i < quiz.length; i++) {
String[] s = quiz[i].split(" ");
int cal = 0;
if (s[1].equals("+")) {
cal = Integer.parseInt(s[0]) + Integer.parseInt(s[2]);
if (cal == Integer.parseInt(s[4])) {
answer[i] = "O";
} else {
answer[i] = "X";
}
} else if (s[1].equals("-")) {
cal = Integer.parseInt(s[0]) - Integer.parseInt(s[2]);
if (cal == Integer.parseInt(s[4])) {
answer[i] = "O";
} else {
answer[i] = "X";
}
}
}
return answer;
}
}
answer 배열의 크기를 quiz의 길이로 지정해줍니다.
quiz의 길이만큼 순회하면서
배열s는 공백으로 구분한 quiz의 i번째 값들을 원소로 갖습니다.
cal는 계산한 값을 담을 변수 입니다.
s의 1번 인덱스 = 연산자가 + 인지 -인지 확인하며
s의 0번 인덱스 값과 2번 인덱스 값을 더하거나 빼줍니다. ( 이때 parseInt를 사용해서 문자를 정수형으로 바꿔줍니다.)
코드가 굉장히 복잡해보여서 더 좋은 방법이 분명 있을거 같습니다.
🔎 다른 사람의 풀이
class Solution {
public String[] solution(String[] quiz) {
for(int i=0; i<quiz.length; i++){
String[] text = quiz[i].split(" ");
int result = Integer.parseInt(text[0]) + ( Integer.parseInt(text[2]) * ( text[1].equals("+") ? 1:-1) );
quiz[i] = result == Integer.parseInt(text[4])? "O": "X";
}
return quiz;
}
}
바로 이렇게 말이죠...
'프로그래머스 > 0단계' 카테고리의 다른 글
DAY19 문자열, 배열, 조건문 (1) | 2023.12.07 |
---|---|
DAY18 문자열, 수학, 조건문, 정렬 (1) | 2023.12.06 |
DAY16 문자열, 수학, 배열, 조건문 (0) | 2023.12.04 |
DAY15 문자열, 해시, 배열, 수학 (1) | 2023.12.02 |
DAY14 조건문, 반복문, 시뮬레이션, 문자열 (0) | 2023.12.01 |