코딩테스트 대비/Softeer 24

[Softeer/Python] H-클린알파 ★★★★☆ - 효과는 굉장했다

Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai SOLUTION import sys P, N = map(int, sys.stdin.readline().split()) virus = list(map(int, sys.stdin.readline().split())) ans = 0 mod = 1000000007 for i in range(N-2, -1, -1): # pow 함수를 이용해 효율적인 나머지 연산 virus[i] *= pow(P, (N-i-1), mod) print(sum(virus) % mod) pow() 함수를 이용해 효율적인 나머지 연산을 하여 시간 복잡도를 줄여서 통과 시킬 수 있다. 만약, 나머지를 pow(P, (N-i-1), mod) 형태가 아닌 pow(..

[Softeer/Python] 복잡한 조립라인2 ★★★★★ - 효과는 굉장했다!

Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai SOLUTION 실패한 코드 import sys K, N = map(int, sys.stdin.readline().split()) dp = [] travel_time = [] for i in range(N-1): line = list(map(int, sys.stdin.readline().split())) dp.append(line[:K]) travel_time.append(line[-1]) dp.append(list(map(int, sys.stdin.readline().split()))) for i in range(N-1): for j in range(K): if i == j: dp[i+1][j] += dp[i][j] e..

[Softeer/Python] 복잡한 조립라인1 ★★★★☆ - 효과는 굉장했다!

Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai SOLUTION import sys K, N = map(int, sys.stdin.readline().split()) dp = [] travel_time = [[[0 for i in range(K)] for j in range(K)] for k in range(N)] for i in range(N-1): line = list(map(int, sys.stdin.readline().split())) dp.append(line[:K]) # 작업 시간 cnt = 0 for j in range(K): for k in range(K): if j == k: continue # 각 작업장 사이를 이동하는 시간들을 전부 할당 travel..

[Softeer/Python] 징검다리2 ★★★★☆ - 효과는 굉장했다!

Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai SOLUTION import sys import bisect # 이분 탐색 N = int(sys.stdin.readline()) stone_height = list(map(int, sys.stdin.readline().split())) dp_front = [stone_height[0]] # 앞 쪽 기준 밟을 수 있는 돌의 유효한 오름차순 높이 dp_back = [stone_height[-1]] # 뒷 쪽 기준 밟을 수 있는 돌의 유효한 오름차순 높이 front_cnt = [1] * N # 앞에서 부터 밟은 돌의 갯수 back_cnt = [1] * N # 뒤에서 부터 밟은 돌의 갯수 # 앞 쪽 기준 for i in rang..

[Softeer/Python] [인증평가(1차) 기출] 로봇이 지나간 경로 ★★★☆☆ - 효과는 굉장했다!

Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai SOLUTION import sys from collections import deque def check(x, y): cnt = 0 for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0 오른쪽으로 회전 ans.append("R") current = next cnt = 1 for i in ans: print(i, end="") sys.exit() "명령어의 개수를 최소화하면서 목표를 달성할 수 있는 방법이 여러 가지라면, 그 중 한 가지를 아무거나 출력하면 된다." 라는 조건이 있으므로 만족하는 경로를 찾으면 sys.exit()을 이용해 바로 프로그램을 종료시킨다. 이 문제는 처..

[Softeer/Python] 수퍼바이러스 ★★★☆☆ - 효과는 굉장했다!

Softeer 제한시간: C/C++(1초), Java/Python/JS(2초) | 메모리 제한: 256MB 수퍼바이러스가 숙주의 몸속에서 0.1초당 P배씩 증가한다. 처음에 수퍼바이러스 K마리가 있었다면 N초 후에는 총 몇 마리의 수퍼바이러스 softeer.ai SOLUTION import sys K, P, N = map(int, sys.stdin.readline().split()) # pow() 계산시 mod값 설정을 하여 시간단축을 시킨 후 K를 곱한 값이 1e9+7 을 넘어갈 수 있기 때문에 한번더 1e9+7로 나눈 나머지 값을 구한다 # 0.1초당 P배씩 증가하므로 N*10을 해준다 print(K*pow(P, N*10, int(1e9+7)) % int(1e9+7)) ※ Softeer 바이러스 문제..

[Softeer/Python] GINI야 도와줘 ★★★☆☆ - 효과는 굉장했다!

Softeer 제한시간 : C/C++/Java/Python/JS(1초) | 메모리 제한 : 256MB GINI는 현대자동차그룹에서 개발한 네비게이션이다. GINI는 너무나도 뛰어나 목적지에 도착하는 시간을 예측할 수 있다. 어느 날 태범이는 세 softeer.ai SOLUTION import sys from collections import deque def shower(): # 소나기 이동 global rain tmp = [] for x, y in rain: for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0

[Softeer/Python] 징검다리 ★★★☆☆ - 효과는 굉장했다!

Softeer 제한시간 : C/C++(1초), Java/Python/JS(2초) | 메모리 제한 : 256MB 남북으로 흐르는 개울에 동서로 징검다리가 놓여져 있다. 이 징검다리의 돌은 들쑥날쑥하여 높이가 모두 다르다. 철수는 개울의 서쪽에 softeer.ai SOLUTION import sys N = int(sys.stdin.readline()) stone_height = list(map(int, sys.stdin.readline().split())) # Dynamic Programming 이용 dp = [1] * N for i in range(1,N): for j in range(i): if stone_height[i] > stone_height[j]: # 현재보다 높은 돌을 밟아야 하므로 dp[i]..

[Softeer/Python] 조립라인 ★★★☆☆ - 효과는 굉장했다!

Softeer 제한시간 : C/C++(1초), Java/Python/JS(2초) | 메모리 제한 : 256MB 동일한 자동차를 생산하는 2개의 조립 라인 A와 B가 있다. 두 조립라인에는 각각 N개의 작업장이 있다. 각각의 작업장을 Ai (1 ≤ i ≤ N)와 softeer.ai SOLUTION import sys N = int(sys.stdin.readline()) assembly_line = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] # Dynamic Programiing 활용 dp = [[0,0]] * N dp[0] = [assembly_line[0][0], assembly_line[0][1]] for i in range(1,..

[Softeer/Python] 강의실 배정 ★★★☆☆ - 효과는 굉장했다!

Softeer 제한시간 : C/C++(1초), Java/Python/JS(2초) | 메모리 제한 : 256MB 김교수는 강의실 1개에 최대한 많은 강의를 배정하려고 한다. 배정된 강의는 서로 겹치지 않아야 하며 수업시간의 길이와 상관없이 최 softeer.ai SOLUTION ※ 실패한 코드 lambda를 이용해 정렬을 하는 코드를 짜는데 시간초과의 문제가 발생했다. import sys N = int(sys.stdin.readline()) meeting_time = [[0] * 2 for _ in range(N)] for i in range(N): start, end = map(int, sys.stdin.readline().split()) meeting_time[i][0] = start meeting_t..