본문 바로가기

Algorithm36

[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.
[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.
[Softeer / Level2] [21년 재직자 대회 예선] 전광판 https://www.softeer.ai/practice/info.do?idx=1&eid=624 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 www.softeer.ai 처음 생각한건 (ON + OFF)횟수 테이블을 만들어서 A 에서 B로 가는 서로의 숫자만 안다면, 점등 되어있는 불빛의 차로 어떻게 할 수 있지 않을까? 생각했었다. 해당 테이블을 모두 채우진 않았지만, 2차원배열로 만들어서 해볼만한 것 같다고 생각 했는데 너무 오래걸려서 중도 포기 했다.. 해답은 내 아이디어랑 비슷하게 딕셔너리 테이블을 만들어서 접근하는 방식 이었다. 내 방법보다 더 세련된 방식으로 아래와 같이 점등되는 위치를 인덱스로 잡아서 정의하는 것 이었다. 생각을 해봐야 하는 부분은 (자릿수가 알맞지 않는경우.. 2023. 10. 6.
[Softeer / Level2] [21년 재직자 대회 예선]비밀 메뉴 https://www.softeer.ai/practice/info.do?idx=1&eid=623 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 www.softeer.ai 문제가 복잡해보이지만 리스트 슬라이싱을 통해 비교하고 조건에 맞는다면 "secret" 을 출력해주면 된다. 주의할 점은, for문 돌릴 때 N-M+1 까지 돌려야 한다는 점? 처음에 N-M 까지라고 생각해서 오답처리 되었다.. 그리고, 한번 출력 이후로 굳이 확인할 필요없으면 exit() 으로 프로그램 종료를 하는식으로 작성했다. 소프티어 공식 풀이에서는 flag 주고 flag보고 출력을 결정하는 방식으로 풀었다. import sys input = sys.stdin.readline M, N, K = map(int, in.. 2023. 10. 5.
반응형