본문 바로가기

Algorithm/Softeer13

[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][HSAT 7회 정기 코딩 인증평가 기출] 자동차 테스트 https://softeer.ai/practice/info.do?idx=1&eid=1717 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제를 보고 itertools 에서 만들 수 있는 가능한 경우의 수를 만든다음, 중앙값을 찾는식으로 진행했었다. (시간초과 엔딩..) 다른 방법이 도저히 떠오르지 않아 해설을 참고했다. 해설에서의 문제해결전략은 3가지였다. 정렬된 리스트에서 피벗을 잡고, 피벗 기준으로 앞의 숫자 갯수와 뒤의 숫자 갯수를 곱해주어서 가능한 경우의 수를 구하기 리스트는 중복이 허용되기 때문에 O(n)의 찾는 시간이 걸림, 따라서 set 으로 정리해서 피벗을 찾아주기 피벗을 찾기위해 bisect(내장함수) 를 사용하기 참고로, bisect_left(ar.. 2023. 10. 13.
[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.
반응형