[コードテスト]ジャージ
質問する
スポーツウェア問題
注意事項
1.体育の授業が受けられる生徒を探す
2.余裕のある学生がジャージを盗まれたときは自分のものを優先する
コミットコード(JAVA)
最初のコードをコミット
import java.util.*;
import java.util.stream.IntStream;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int[] students = new int[n+1];
IntStream.of(lost).forEach(i -> students[i] -= 1);
IntStream.of(reserve).forEach(i -> students[i] += 1);
IntStream.of(reserve)
.filter(i -> students[i] == 1)
.forEach(i -> {
if ((i-1) > 0 && students[i-1] == -1) {
students[i-1] += 1;
} else if ((i+1) <= n && students[i+1] == -1){
students[i+1] += 1;
} });
return (int)IntStream.range(1, n+1)
.filter(i -> students[i] >= 0)
.count();
}
}
1)生徒数の配列を作成する2)紛失した学生を反映する
3)暇のある学生に運動服を配り始める
正確性テスト
정확성 테스트
테스트 1 〉 통과 (6.88ms, 53.9MB)
테스트 2 〉 통과 (3.55ms, 56.1MB)
테스트 3 〉 통과 (7.40ms, 53.7MB)
테스트 4 〉 통과 (7.10ms, 53.2MB)
테스트 5 〉 통과 (4.89ms, 52.9MB)
테스트 6 〉 통과 (10.10ms, 52.2MB)
테스트 7 〉 통과 (6.05ms, 52.7MB)
테스트 8 〉 통과 (6.27ms, 52.5MB)
테스트 9 〉 통과 (3.98ms, 52.6MB)
테스트 10 〉 통과 (4.16ms, 52.4MB)
테스트 11 〉 통과 (4.23ms, 52.4MB)
테스트 12 〉 통과 (4.40ms, 52.3MB)
コミットコード(Python)
最初のコードをコミット
def solution(n, lost, reserve):
answer = n
student = [0 for i in range(0, n+2)]
lostList = Counter(lost) - Counter(reserve)
reserveList = Counter(reserve) - Counter(lost)
for lost in lostList:
student[lost] -= 1
answer -= 1
for reserve in reserveList:
if reserve-1 > 0 and student[reserve-1] == -1:
student[reserve-1] += 1
answer += 1
elif reserve+1 <= n and student[reserve+1] == -1:
student[reserve+1] += 1
answer += 1
return answer
正確性テスト정확성 테스트
테스트 1 〉 통과 (0.06ms, 10.3MB)
테스트 2 〉 통과 (0.06ms, 10.3MB)
테스트 3 〉 통과 (0.06ms, 10.2MB)
테스트 4 〉 통과 (0.05ms, 10.2MB)
테스트 5 〉 통과 (0.07ms, 10.2MB)
테스트 6 〉 통과 (0.05ms, 10.2MB)
테스트 7 〉 통과 (0.08ms, 10.3MB)
테스트 8 〉 통과 (0.05ms, 10.3MB)
테스트 9 〉 통과 (0.05ms, 10.2MB)
테스트 10 〉통과 (0.07ms, 10.3MB)
테스트 11 〉통과 (0.05ms, 10.3MB)
테스트 12 〉통과 (0.05ms, 10.3MB)
2番目のコードをコミット
def solution(n, lost, reserve):
_reserve = [r for r in reserve if r not in lost]
_lost = [l for l in lost if l not in reserve]
for r in _reserve:
f = r - 1
b = r + 1
if f in _lost:
_lost.remove(f)
elif b in _lost:
_lost.remove(b)
return n - len(_lost)
正確性テスト정확성 테스트
테스트 1 〉 통과 (0.01ms, 10.3MB)
테스트 2 〉 통과 (0.01ms, 10.3MB)
테스트 3 〉 통과 (0.01ms, 10.3MB)
테스트 4 〉 통과 (0.01ms, 10.1MB)
테스트 5 〉 통과 (0.01ms, 10.2MB)
테스트 6 〉 통과 (0.01ms, 10.2MB)
테스트 7 〉 통과 (0.02ms, 10.3MB)
테스트 8 〉 통과 (0.01ms, 10.3MB)
테스트 9 〉 통과 (0.01ms, 10.2MB)
테스트 10 〉 통과 (0.01ms, 10.2MB)
테스트 11 〉 통과 (0.01ms, 10.4MB)
테스트 12 〉 통과 (0.01ms, 10.3MB)
中にドアがあったら、、、!Reference
この問題について([コードテスト]ジャージ), 我々は、より多くの情報をここで見つけました https://velog.io/@cham/코딩테스트-체육복テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol