3/7 스터디 문제

hyejun sang·2022년 3월 7일
0

알고리즘

목록 보기
3/28
post-thumbnail

1번 문제.
https://www.acmicpc.net/problem/2776
-> 암기왕

1번 문제 풀이 코드

① 답은 나오지만 시간 초과

import time
start = time.time() # 시작시간 저장
import sys

# 테스트 케이스 개수 -> t
t = int(sys.stdin.readline())

# 테스트 케이스만큼 반복
for i in range(t) :
    # 연종이 본 정수 개수 -> n
    n = int(sys.stdin.readline())
    # 연종이 본 정수들 -> note1
    note1 = list(map(int, sys.stdin.readline().split()))
    # 동규가 받아 적은 정수 개수 -> m
    m = int(sys.stdin.readline())
    # 동규가 받아 적은 정수들 -> note2
    note2 = list(map(int, sys.stdin.readline().split()))

    # note2 정수를 보면서 note1과 비교 반복
    for number in note2 :
        if number in note1 :
            print(1)
        else :
            print(0)

print(f"측정된 시간 : {time.time() - start}") # 단위는 초

② 백준 통과...

import time
start = time.time() # 시작시간 저장
import sys

# 테스트 케이스 개수 -> t
t = int(sys.stdin.readline())

# 테스트 케이스만큼 반복
for i in range(t) :
    # 연종이 본 정수 개수 -> n
    n = int(sys.stdin.readline())
    # 연종이 본 정수들 -> note1
    note1 = list(map(int, sys.stdin.readline().split()))
    # 동규가 받아 적은 정수 개수 -> m
    m = int(sys.stdin.readline())
    # 동규가 받아 적은 정수들 -> note2
    note2 = list(map(int, sys.stdin.readline().split()))

    # note2 정수를 보면서 note1과 비교 반복
    for number in note2 :
        if number in note1 :
            print(1)
        else :
            print(0)

print(f"측정된 시간 : {time.time() - start}") # 단위는 초

1번 문제에서 list를 set으로 변경하였더니 시간 안에 풀 수 있었다. 이 문제를 이분탐색으로 풀면 빠르게 나오는 것 같다.
이분탐색을 더 알아볼 것

2번 문제.
https://www.acmicpc.net/problem/2108
-> 문제이름

2번 문제 풀이 코드

import sys

# 테스트케이스 수
t = int(sys.stdin.readline())

for i in range(t) :
    # 지원자수
    applicant_cnt= int(sys.stdin.readline())
    grade = []

    for applicant in range(applicant_cnt) :
        grade.append(list(map(int, sys.stdin.readline().split())))

    grade.sort()
    # print(grade) # -> 여기서 결과가 5를 기준으로 [[1, 4], [2, 3], [3, 2], [4, 1], [5, 5]] 나옴

    # 최대값은 순위가 가장 높은 사람의 것이므로
    max = grade[0][1]
    # 합격자 수 초기화
    success = 1
    # 1등 합격자는 제외하고 생각할 것이므로
    for j in range(1, applicant_cnt) :
        # 1등의 2번째 값을 비교
        if max > grade[j][1] :
            success += 1
            max = grade[j][1]

    print(success)

0개의 댓글