[코딩테스트] 체육복

시나브로·2021년 7월 12일
0

코딩테스트

목록 보기
23/34
post-thumbnail

문제


체육복 문제 바로가기


유의사항
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)



두번째 코드 제출

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)

배열안에 for안에 if문,,,!




profile
Be More!

0개의 댓글