목차 💻
▸ 푸드 파이트 대회
▸ 콜라 문제
▸ 명예의 전당(1)
▸ 2016년
▸ 카드 뭉치
출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 푸드 파이트 대회
✓ 문제 이해
food = [1, 3, 4, 6] 이면, 물(0)이 1개, 1번 음식 3개, 2번 음식 4개, 3번 음식 6개
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public String solution(int[] food) {
String answer = "";
int length = food.length;
List<Integer> result = new ArrayList<>();
for(int i = 1; i < food.length; i++){
if(food[i]%2 == 1){
food[i] = food[i] -1;
}
food[i] = food[i]/2;
}
int a = 1;
for(int i = 1; i < food.length; i++){
int n = food[i];
for(int j = 0; j < n; j++){
result.add(a);
}
a++;
}
List<Integer> combinedList = new ArrayList<>();
combinedList.addAll(result);
combinedList.add(0);
Collections.reverse(result);
combinedList.addAll(result);
for(int i : combinedList){
String s = String.valueOf(i);
answer += s;
}
return answer;
}
}
출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 콜라 문제
[오답 코드]
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
int remain = 0;
while(a <= n){
int temp = n/a;
remain += n%a;
answer += temp;
n = temp;
}
if(n + remain >= a){
answer += (n + remain)/a;
}
return answer;
}
}
[수정 코드]
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
while(a <= n){
int coke = (n/a)*b;
int remain = n%a;
answer += coke;
n = coke + remain;
}
return answer;
}
}
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int k, int[] score) {
int length = score.length;
int[] answer = new int[length];
List<Integer> scores = new ArrayList<>();
List<Integer> minscore = new ArrayList<>();
for(int i = 0; i < length; i++){
scores.add(score[i]);
if(scores.size() <= k){
int min = Collections.min(scores);
minscore.add(min);
} else {
Collections.sort(scores);
List<Integer> sublist = scores.subList(scores.size()-k,scores.size());
int min = sublist.get(0);
minscore.add(min);
}
}
for(int i = 0; i < answer.length; i++){
answer[i] = minscore.get(i);
}
return answer;
}
}
출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 2016년
class Solution {
public String solution(int a, int b) {
String answer = "";
int[] lastday = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(a > 1){
for(int i = 1; i < a; i++){
b += lastday[i-1];
}
}
int remain = b%7;
switch(remain){
case 0:
answer = "THU";
break;
case 1:
answer = "FRI";
break;
case 2:
answer = "SAT";
break;
case 3:
answer = "SUN";
break;
case 4:
answer = "MON";
break;
case 5:
answer = "TUE";
break;
case 6:
answer = "WED";
break;
}
return answer;
}
}
출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 카드 뭉치
[오류 코드]
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
String answer = "";
int length = goal.length;
📍List<String> removegoal = Arrays.asList(goal);
📍List<String> cards1List = Arrays.asList(cards1);
📍List<String> cards2List = Arrays.asList(cards2);
for(int i = 0; i < length; i++){
if(removegoal.get(0).equals(cards1List.get(0))){
removegoal.remove(0);
cards1List.remove(0);
} else if(removegoal.get(0).equals(cards2List.get(0))){
removegoal.remove(0);
cards1List.remove(0);
}
}
if(removegoal.size() != 0){
answer = "No";
} else {
answer = "Yes";
}
return answer;
}
}
List<String> removegoal = new ArrayList<>(Arrays.asList(goal));
List<String> cards1List = new ArrayList<>(Arrays.asList(cards1));
List<String> cards2List = new ArrayList<>(Arrays.asList(cards2));
- 또한, 리스트가 비어있는 경우 get을 해서 오류가 발생했다.
- 따라서, if문에 리스트가 비어있는지 확인하는 조건문도 달았다.
[수정 코드]
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
String answer = "";
int length = goal.length;
List<String> removegoal = new ArrayList<>(Arrays.asList(goal));
List<String> cards1List = new ArrayList<>(Arrays.asList(cards1));
List<String> cards2List = new ArrayList<>(Arrays.asList(cards2));
for(int i = 0; i < length; i++){
if(!removegoal.isEmpty() && !cards1List.isEmpty() && removegoal.get(0).equals(cards1List.get(0))){
removegoal.remove(0);
cards1List.remove(0);
} else if(!removegoal.isEmpty() && !cards2List.isEmpty() && removegoal.get(0).equals(cards2List.get(0))){
removegoal.remove(0);
cards2List.remove(0);
}
}
if(removegoal.isEmpty()){
answer = "Yes";
} else {
answer = "No";
}
return answer;
}
}