[コードテスト]ジャージ


質問する


スポーツウェア問題
注意事項
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)
中にドアがあったら、、、!