목록파이썬 (5)
하루일문
문제 https://www.acmicpc.net/problem/12738 12738번: 가장 긴 증가하는 부분 수열 3 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net 코드 from bisect import bisect_left import sys input = sys.stdin.readline n = int(input()) li = list(map(int, input().split())) # 수열을 저장하는 리스트 li_2 = [-1000000001] for i in li: # For문에서 li 순서대로 li_2에 가장 최근..
문제 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net 풀이 함수(내 풀이) def pleasuer(l, j, i): global L, J, joy # 마지막인덱스에 도착했을때 들어간다 if i == n: # joy보다 커졌을때 저장한다 if joy 0: pl..
문제 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드 DFS # DFS def dfs(t, money): global pay # 맨 끝으로 간다면 리턴 & money가 pay보다 크다면 저장 if t == N: if pay < money: pay = money return # t가 N과 동일해 질 때까지 더해준다 dfs(t + 1, money) # 리턴 후 N을 넘지 않는 범위 안에서 더해준다. if t + li[t][0]
문제 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 코드 def hanoi(n, start, goal, side): # 1일 경우(가장 작다) 골로 보내줘 if n == 1: return print(start, goal) # 아니라면 n-1하면주고 goal, side 위치를 바꿔줘 # 짝 = goal, side 위치 변경 hanoi(n-1, start, side, goal) # 재귀하고 나오면(작은 수가 빠졌다.) 움직일 수 있다 # 1일 경우와 다른 축에 넣어줘야함 print(start, goal) hano..
문제 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 코드 import sys input = sys.stdin.readline s = input().strip() dic = {} for i in range(len(s)): for j in range(i+1, len(s)+1): if s[i:j] not in dic: dic[s[i:j]] = 1 else: dic[s[i:j]] += 1 print(len(dic)) 해설 문자를 다 받아서 딕셔너리에 넣어서 딕셔너리 개수를 구했다.