
프로그래머스 코딩테스트 입문 Java로 Day 23 배열 정렬 문자열 풀기
정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
n ≤ 10,000numlist의 원소 ≤ 10,000numlist의 길이 ≤ 100numlist는 중복된 원소를 갖지 않습니다.입출력 예
| numlist | n | result |
|---|---|---|
| [1, 2, 3, 4, 5, 6] | 4 | [4, 5, 3, 6, 2, 1] |
| [10000,20,36,47,40,6,10,7000] | 30 | [36, 40, 20, 47, 10, 6, 7000, 10000] |
import java.util.*;
class Solution {
public int[] solution(int[] numlist, int n) {
int[] answer = new int[numlist.length], check = new int[10001];
Arrays.fill(check, -1);
for (int i = 0; i < numlist.length; i++) {
check[numlist[i]] = Math.abs(numlist[i] - n);
}
for (int i = 0; i < answer.length; i++) {
int num = 0, sub = 10000;
for (int j = 1; j < check.length; j++) {
if (check[j] != -1 && check[j] <= sub) {
sub = check[j];
num = j;
}
}
answer[i] = num;
check[num] = -1;
}
return answer;
}
}
n과 numlist 차를 저장해줄 check 배열 선언 → -1로 초기화 하여 -1이 아닌 값들만 사용하도록 함.
값은 배열의 인덱스를 통해 구분 하도록 함.
n과 numlist 차는 절대값으로 저장되며 한 번 answer에 저장된 값은 -1로 초기화되도록 함.
영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열 score가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
score[0], score[1] ≤ 100score의 길이 ≤ 10score의 원소 길이는 2입니다.score는 중복된 원소를 갖지 않습니다.입출력 예
| score | result |
|---|---|
| [[80, 70], [90, 50], [40, 70], [50, 80]] | [1, 2, 4, 3] |
| [[80, 70], [70, 80], [30, 50], [90, 100], [100, 90], [100, 100], [10, 30]] | [4, 4, 6, 2, 2, 1, 7] |
import java.util.*;
class Solution {
public int[] solution(int[][] score) {
int[] answer = new int[score.length];
double[] result = new double[score.length];
Arrays.fill(answer, 1);
for (int i = 0; i < score.length; i++) {
result[i] = (double)(score[i][0] + score[i][1]) / 2;
}
for (int i = 0; i < result.length - 1; i++) {
for (int j = i + 1; j < result.length; j++) {
if (result[i] < result[j]) answer[i]++;
else if (result[i] > result[j]) answer[j]++;
}
}
return answer;
}
}
result 값이 평균이다보니 타입은 int가 아닌 double로 정확하게 비교할 수 있도록 해야함.
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
babbling의 길이 ≤ 100babbling[i]의 길이 ≤ 15babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.입출력 예
| babbling | result |
|---|---|
| ["aya", "yee", "u", "maa", "wyeoo"] | 1 |
| ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] | 3 |
유의사항
class Solution {
public int solution(String[] babbling) {
int answer = 0;
String[] arr = {"aya", "ye", "woo", "ma"};
x: for (String bab : babbling) {
for (String str : arr) {
if (bab.trim().equals(str)) {
answer++;
continue x;
} else if (bab.contains(str)) {
int idx = bab.indexOf(str);
bab = bab.replaceFirst(str, " ");
} else {
bab = bab.replaceAll(" ", "");
if (bab.length() == 0) {
answer++;
continue x;
}
}
}
}
return answer;
}
}
만약 babbling 자체가 옹알이 단어와 똑같으면 바로 카운팅
그렇지 않고 babbling 안에 옹알이가 포함되어 있다면 그 옹알이를 빈칸으로 대체함.
마지막에 이 빈칸은 공백으로 바뀜.
babbling의 최종 길이가 0이 되면 + 마지막 대체 단어만 남는다면 카운팅
머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
제한사항
id_pw의 길이는 2입니다.id_pw와 db의 원소는 [아이디, 패스워드] 형태입니다.db의 길이 ≤ 10db의 원소의 길이는 2입니다.입출력 예
| id_pw | db | result |
|---|---|---|
| ["meosseugi", "1234"] | [["rardss", "123"], ["yyoom", "1234"], ["meosseugi", "1234"]] | "login" |
| ["programmer01", "15789"] | [["programmer02", "111111"], ["programmer00", "134"], ["programmer01", "1145"]] | "wrong pw" |
| ["rabbit04", "98761"] | [["jaja11", "98761"], ["krong0313", "29440"], ["rabbit00", "111333"]] | "fail" |
class Solution {
public String solution(String[] id_pw, String[][] db) {
String answer = "fail";
for (int i = 0; i < db.length; i++) {
if (id_pw[0].equals(db[i][0]) && id_pw[1].equals(db[i][1])) {
answer = "login";
break;
}
else if (id_pw[0].equals(db[i][0]) && !id_pw[1].equals(db[i][1])) answer = "wrong pw";
}
return answer;
}
}
1) 정답률이 가장 낮은 옹알이를 풀어봤는데 솔직히 그렇게 어렵진 않았다고 생각한다.
오히려 다른 애들보다 쉬웠던 것 같다.
2) 기록표
