본문 바로가기

소프티어11

[Softeer / Level3] 강의실 배정 https://softeer.ai/practice/info.do?idx=1&eid=392 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 그리디 알고리즘의 대표문제이다. 최대한 강의실을 많이 배정하기 위해서 끝나는 시간을 기준으로 하여 정렬하면 된다. 시작, 종료시간을 설정해주고 그다음에 들어오는 튜플의 시작, 종료시간을 재설정 하는식으로 순회시켜준다. import sys input = sys.stdin.readline N = int(input()) S = [] for _ in range(N): S.append(tuple(map(int, input().split()))) S.sort(key=lambda x: x[1]) p, q, cnt = 0, 0, 0 for star.. 2023. 10. 17.
[Softeer / Level3] 성적 평균 https://softeer.ai/practice/info.do?idx=1&eid=389 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 구간에서 성적 평균을 구한다. 파이썬에서는 리스트 슬라이싱으로 비교적 쉽게 해결할 수 있다. 다른 Level3 문제보다 월등히 쉬워서, 이게 왜 Level3에 있는지 이해가 안간다.. import sys N, K = map(int, input().split()) S = list(map(int, input().split())) for _ in range(K): a, b = map(int, input().split()) print(round(sum(S[a-1:b]) / (b - a + 1), 2)) 2023. 10. 16.
[Softeer / Level3][HSAT 7회 정기 코딩 인증평가 기출] 순서대로 방문하기 https://softeer.ai/practice/info.do?idx=1&eid=2050 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 주어진 조건에 따라 정해진 위치를 방문해야하는 그래프 문제이다. 인덱스에 따라 움직이도록 종료조건을 걸어주고, 마지막 인덱스가 나온다면 카운트 값만 증가시키고 리턴. 주의해야할 점은 방문체크를 하고 나올 때 다시 방문해제를 해주어야 한다는 것이다. import sys from collections import deque input = sys.stdin.readline N, M = map(int, input().split()) def is_valid(i, j): if i = N or j = N: return False if visit.. 2023. 10. 14.
[Softeer / Level3]우물 안 개구리 https://softeer.ai/practice/info.do?idx=1&eid=394 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 연결리스트를 정의해서, 관계가 있는 정점들끼리 비교를 해주면 된다. 가장 강하다고 생각하는 사람은 다른 사람들과 비교해서 강하다고 생각하기 때문에 한번이라도 만족하지 않게된다면 다르게 표시한다. strongest 리스트를 사람 수만큼 정의하고 모두 강하다는 판단을 한다는 것을 1을 기본으로 정의했다. 한번이라도 비교했을 때 약하다고 나타나면 0으로 표시하고 break 최종적으로 strongest 리스트에 1의 갯수를 세어 몇명이 있는지 출력한다. import sys input = sys.stdin.readline N, M = map(.. 2023. 10. 8.
[Softeer / Level2] GBC https://www.softeer.ai/practice/info.do?idx=1&eid=584&sw_prbl_sbms_sn=260267 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 www.softeer.ai 너무 생각을 많이 했던 구현문제.. 제네릭한 로직을 짜는것보다 단순하게 접근하는 방법이 더 좋을 수 있다는 경험치를 얻었다. S, T 에 대한 배열을 각각 정의한다음 배열에다가 제한속도를 넣어서 속도의 차이를 U에다가 저장한다. 마지막으로, U에서 최댓값만 구하면 되는 문제였다. import sys input = sys.stdin.readline N, M = map(int, input().split()) S, T, U = [0] * 101, [0] * 101, [0] * 101 .. 2023. 10. 8.
[Softeer / Level2] 바이러스 https://www.softeer.ai/practice/info.do?idx=1&eid=407 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 www.softeer.ai 너무 오랫만에 맞닥뜨린 시간초과가 나는 문제여서 당황했다. 개인적으로 파이썬은 시간초과 카운팅하기가 너무어렵다. 처음에는, print((K * (P ** N)) % 1000000007)으로 풀었다. 아니나 다를까 시간초과 내장함수를 찾아서 쓰면 더 효율적이지 않을까 싶어서 공식문서를 뒤져보고 power함수를 쓰기로 마음먹었다. 기본 파이썬 내장함수인 pow로 1000000007를 마지막 인자로 던져주면 직접 나눠주는 것보다 더 효율적이라고 한다. 그러나, 마지막에 K 곱해주고 한번 더 디비전 연산을 해주어야 한다. (시.. 2023. 10. 7.
반응형