본문 바로가기

Algorithm/Softeer13

[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.
[Softeer / Level2] 지도 자동 구축 https://www.softeer.ai/practice/info.do?idx=1&eid=413 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 www.softeer.ai 전체 격자의 갯수가 4 -> 9 -> 25 ... 제곱으로 늘어나서 격자점의 갯수만 알면 해결할 수 있다. 점화식의 규칙만 알아내면 되는데, 내가 생각했을 때 (이전 격자 갯수 + 올림(이전 격자 갯수 / 2)) 하면 될 줄 알았는데 아니였다.. 해답풀이는 아래처럼 (이전격자 + 2 ^ (i - 1)) 로 구성된다. 1단계 : (2+1) ^ 2 2단계 : (3+2) ^ 2 3단계 : (5+4) ^ 2 4단계 : (9+8) ^ 2 ... import sys N = int(sys.stdin.readline()) S = [0.. 2023. 10. 4.
[Softeer / Level2] 장애물 인식 프로그램 https://www.softeer.ai/practice/info.do?idx=1&eid=409 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 www.softeer.ai 문제를 보자마자 백준문제(2667번 / 단지번호 붙이기) 에서 풀었던 문제가 떠올랐다. 동일한 문제여서 쉽게 해결할 수 있었다. 복기해야하는 점은 격자 벗어나는 부분(종료조건) 또는 0이면 False 리턴 방문을 했으면 방문표시 (1 -> 0)으로 표시하여 탐색한곳 다시 탐색하지 않도록 방지 문제 조건에 맞게 정렬을 한다. import sys def dfs(S, x, y): global cnt if x = N or y = N: return False if S[x][y] == '1': cnt += 1 S[x][y] = '.. 2023. 10. 3.
[Softeer / Level2] 8단 변속기 https://www.softeer.ai/practice/info.do?idx=1&eid=408 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 www.softeer.ai 간단한 리스트 비교문제이다. 조건에 알맞게 문자열을 출력해주면 끝 import sys input = sys.stdin.readline S = list(map(int, input().split())) if S == [1, 2, 3, 4, 5, 6, 7, 8]: print("ascending") elif S == [8, 7, 6, 5, 4, 3, 2, 1]: print("descending") else: print("mixed") 2023. 10. 2.
반응형