Code Signal -Arcade
코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당.
주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...
되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요! \
Elections Winners
선거의 승리자들
문제를 보겠습니다.
주어진 배열의 숫자들은 각 후보들의 현재 투표수를 의미합니다.
여기서 integer k는 남아 있는 투표의 수를 뜻합니다.
여기서 몇 명의 후보가 아직 이 남은 투표수에 따라 승리 할 수 있는지 그 경우의 해당하는 후보의 숫자를 구하라는 문제입니다.
답안 코드를 보겠습니다.
int electionsWinners(int[] votes, int k) {
int result = votes.length;
int [] elect = new int[votes.length];
if(k == 0){
System.out.println("no more voters..");
Arrays.sort(votes);
if(votes[votes.length-1] == votes[votes.length-2]){return 0;}
else{return 1;}
}else if(k != 0) {
for(int i = 0; i<votes.length; i++){ elect[i] = votes[i]+k;}
for(int i = 0; i<votes.length; i++){
for(int j = 0; j<votes.length; j++){
if(elect[i] <= votes[j]){result--; break;}
}
}
}
System.out.println("final result is..."+result+" people can be a Winner !!");
return result;
}
-
먼저 새로운 배열을 하나 선언해줍니다.
int [] elect = new int[votes.length];
-
이제 k의 값이 0 이 아니라면, elect배열에 각자 최대 얻을 수 있는 표의 수를 담아줍니다.
-
elect에는 각자 가능한 최대 득표수가 담겨있는 배열이 되었고, 그것을 기존의 현재 득표수배열 votes와 비교를 해줍니다.
-
이 두개의 반복문을 진행하면서 조건문을 걸어줍니다.
if(elect[i] <= votes[j]){result--; break;}
그 후보의 최대 득표수가 기존의 어떠한 후보의 투표수보다 작거나 같다면 그 후보는 절대 당선이 안되니깐, result에서 -1을 해주면 되는 것이죠.
그렇게 문제 풀이가 완료 됩니다.
이해가 안되신다면 댓글 달아주세요.
*이제 엘리트 분들의 답안을 감상하자... *
JAVA
int electionsWinners(int[] votes, int k)
{
int max = Arrays.stream(votes).max().getAsInt();
return k == 0 ? Arrays.stream(votes).filter(x -> x == max).count() == 1 ? 1 : 0 : (int) Arrays.stream(votes).filter(x -> x + k > max).count();
}
stream 역시 편리하지만, 쓰는사람만 편한거 같네요. 모르는 사람은 뭔말인지도 모를 가능성이 높아지는...
Python3
def electionsWinners(v, k):
m = max(v)
return int(v.count(m) == 1) if k == 0 else len([n for n in v if m < n + k])
역시 파이썬... 단순하고 직관적이네요.. 역시 ..
JS
function electionsWinners(votes, k) {
var max=Math.max(...votes)
var r=votes.filter(x=>x+k>max||x===max).length
return k?r:r==1?1:0
}
공감 버튼♥ 눌러주시면 더욱 많은 포스팅을 올리는데 힘이 됩니다!
부탁드려요 돈드는거 아니잖아요~
'Algorithm > Java' 카테고리의 다른 글
#47_Code Signal Arcade >> Is MAC 48 Address? (0) | 2020.06.09 |
---|---|
#45_Code Signal Arcade >> Build Palindrome (0) | 2020.04.08 |
#44_Code Signal Arcade >> Find Email Domain (0) | 2020.03.19 |