728x90
1. 과일 장수
https://school.programmers.co.kr/learn/courses/30/lessons/135808
import java.util.*;
class Solution {
public int solution(int k, int m, int[] score) {
int answer = 0;
Arrays.sort(score);
for (int i=score.length-1; i>=0; i-=m) {
if (i>=m-1) answer += score[i- m + 1] * m;
else break;
}
return answer;
}
}
원래는 아래처럼 배열을 내림차순 정렬을 하려고 했으나,
Arrays.sort(arr, Collections.reverseOrder());
[Error] no suitable method found for sort(int[],java.util.Comparator<java.lang.Object>) 에러가 떴다.
원인을 찾아보니 Comparator는 원시 타입인 int 배열에서는 사용할 수 없고, 객체 배열에서는 사용이 가능하기 때문에 Integer[]로 바꿔줘야 사용이 가능하다고 한다.
그래서 그냥 오름차순으로 정렬을 하고, 뒤에서부터 인덱스를 확인해가는 소스를 짰다.
2. 영어 끝말잇기
https://school.programmers.co.kr/learn/courses/30/lessons/12981
import java.util.*;
class Solution {
public int[] solution(int n, String[] words) {
int[] answer = new int[2];
/*문제 이해
같은 단어가 있는지 확인!!
words 배열 앞에서부터 string의 맨 뒷 글자와 그 다음 앞 글자를 비교해가야함
그리고 다르다면 거기서 break하고, 그 원소의 index+1를 n으로 나눠서
몫+1은 answer[1]에, 나머지는 answer[0] (나머지가 0이면 n으로 넣기)
*/
List<String> wordCheck = new ArrayList<>(); wordCheck.add(words[0]);
int wrong = -1; //wrong은 몇 번째에 틀렸는지
for (int i=1; i<words.length; i++){
if (wordCheck.contains(words[i])){
wrong = i+1; break; //중복
} else wordCheck.add(words[i]);
if (words[i].charAt(0) != words[i-1].charAt(words[i-1].length()-1)){
wrong = i+1; break; //틀림
}
}
//System.out.println(wrong);
if (wrong == -1) return answer; //-1이면 틀린 부분이 없음
if (wrong%n == 0) answer[0] = n;
else answer[0] = wrong%n;
answer[1] = (wrong-1)/n + 1;
return answer;
}
}
728x90
'Algorithm Study > Programmers' 카테고리의 다른 글
[프로그래머스] 평행 (C#) (0) | 2023.07.25 |
---|---|
[프로그래머스] 달리기 경주 - 시간 복잡도를 꼭 고려해야 하는 문제 (Java) (0) | 2023.07.10 |
[프로그래머스] 귤 고르기 / 삼총사 / 자연수 뒤집어 배열로 만들기 (Java) (0) | 2023.07.09 |
[프로그래머스] 체육복 / 가장 가까운 같은 글자 (Java) (0) | 2023.07.03 |
[프로그래머스] 소수찾기 / 의상 (Java) (0) | 2023.06.26 |