풀이
class Solution {
public int solution(int n) {
int answer = 0;
boolean[] array = new boolean[n+1];
for (int i = 2; i <= n ; i++) {
array[i] = true;
}
for (int i = 2; i <= n; i++) {
if(array[i] == true) {
answer++;
for (int j = 1; j*i <= n ; j++) {
array[i*j] =false;
}
}
}
return answer;
}
}
소수를 효율적으로 찾는법은 스스로 찾을 순 없었고 에라토스테네스의 체라는 방법을 공부한 뒤에 적용하였다
array[i]==true라고 비교하는 부분에서 비교를 ==가 아닌 =으로 해서 계산 오류가 생겨서 찾는데 오래걸렸다.. 비교는 당연히 ==로 하는건데 왜그렇게 써놧는지 모르겠다
풀이
class Solution {
public String solution(int n) {
StringBuilder stringBuilder = new StringBuilder(n);
for (int i = 0; i < n; i++) {
if (i % 2 != 0 ){
stringBuilder.append("박");
} else {
stringBuilder.append("수");
}
}
return stringBuilder.toString();
}
}
풀이
class Solution {
public int solution(int[] a, int[] b) {
int answer = 0;
for (int i = 0; i < a.length; i++) {
answer += a[i]*b[i];
}
return answer;
}
}
풀이
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(int[] numbers) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < numbers.length; i++) {
for (int j = i+1; j < numbers.length; j++) {
list.add(numbers[i]+numbers[j]);
}
}
list.sort(Integer::compareTo);
for (int i = 0; i <list.size()-1 ; i++) {
if (list.get(i).equals(list.get(i+1))) {
list.remove(i);
i = -1;
}
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
풀이
import java.util.Arrays;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
for (int i = 0; i < completion.length ; i++) {
if (!participant[i].equals(completion[i])){
answer=participant[i];
break;
}
}
if(answer.length()==0){
answer = participant[participant.length-1];
}
return answer;
}
}
2중 for문을 통해 알고리즘을 구현했을 때는 효율성테스트를 통과하지 못해 어떤방법이 있을까 고민하다가 정렬을 해서 for문 한번으로 비교하자는 마음으로 구현해보았는데 효율성테스트까지 통과하였다
가장 추천이 많은 풀이는 HashMap을 이용한 풀이로 key값에 pariticpant[] player를 넣고 map에 push할따마다 value를 ++해주고 completion Player를 다시 한번 Hashmap에 넣어주어 이때는 value에 --를 해준다
이후 map에 key값을 가져와 value가 0이 아닌 player찾아 return하여 해결한다
알고리즘에서 중복값의 경우 대부분 set이나 map을 통해서 줄여주면서 연산속도를 올려주는 공통점이 보이는데 나도 다음에는 적극사용해봐야 겠다