본문 바로가기

코딩 테스트48

[백준 11049번] 행렬 곱셈 순서 문제 풀이 주어진 행렬의 최소 곱셈 연산을 구하는 문제이다. dp를 이용해서, dp[i][j]에 i+1번째 행렬부터, j+1번째 행렬까지 곱했을 때의 곱셈 연산 횟수의 최솟값을 저장해서 풀었다. N = int(input()) arr = [] INF = int(1e9) for _ in range(N): r, c = map(int, input().split()) arr.append((r, c)) dp = [[0] * N for _ in range(N)] for i in range(N - 1): dp[i][i + 1] = arr[i][0] * arr[i + 1][0] * arr[i + 1][1] for L in range(2, N): i = 0 j = L while j.. 2023. 8. 21.
[백준 2469번] 사다리 타기 문제 풀이 (with python) 먼저, 이 문제에 감을 잡기위해 입출력을 이용해 사다리 타기가 완성되어 있다고 가정하고, 사람들이 원하는 순서대로와 동일하게 출력되는지를 테스트 해보았다. arr[ row ][ j ] 에 ' - ' 표시가 있을 경우 people[ j ]와 people[ j + 1]의 값을 교환했다. import sys input = sys.stdin.readline n = int(input()) row = int(input()) arr = [] goal = list(input().rstrip()) people = sorted(goal) for i in range(row): arr.append(list(input().rstrip())) for i in range(row): for j.. 2023. 8. 17.
[백준 18311번] 왕복 문제풀이 지나야 할 코스를 출력하는 것이므로 다음 코스를 더했을때 K 값보다 큰 경우 해당 코스를 출력하는 방식으로 생각했다. K가 N번째 코스에 도착하기 전에 (N번 코스를 찍고 다시 돌아오기 전에) K값보다 커지는 경우와, N번째에서 다시 돌아와야 하는 두 경우로 생각했다. 결과 값은 배열 인덱스를 통해 계산한 했으므로 + 1 해주면 된다. import sys dist = 0 result = 1 N, K = map(int, input().split()) arr = list(map(int, input().split())) for i in range(N): result = i dist += arr[i] if dist > K: break if dist < K: f.. 2023. 8. 16.
[백준 17413번] 단어 뒤집기 2 문장의 단어인지를 구분하는 것은 괄호와 공백이다. 문장을 리스트로 만들어 괄호 안일 경우 flag = True로 놓고 순서대로 result에 저장하고, 단어인 경우는 flag = False 로 놓고 임시 문자열에 저장한 후, 순서를 바꾸었다. s=list(input()) flag=False word='' result='' for i in s: if flag==False: # 괄호이거나 문자이거나 공백 if i=='': flag=False result=result+word word='' print(result+word) 2023. 8. 15.