파이썬 74

백준 2798 파이썬(brute force)

brute force란? 암호해독에서 사용되는 방법으로 무차별적으로 넣을 수 있는 숫자는 다 시도해보면서 해독하는 방법이다. 시간과 조건만 된다면 가장 단순하면서도 언젠가는 무조건 풀 수 있는 방법이다. 2798번 내 코드 # 2798 블랙잭 n,m = map(int,input().split()) dack = list(map(int,input().split())) target = m for i in range(len(dack)-2): for j in range(i+1,len(dack)-1): for k in range(j+1,len(dack)): sum = dack[i]+dack[j]+dack[k] if sum > m: continue elif target >= m-sum: target = m-sum a..

백준13305 파이썬(그리디)

# 주유소 n = int(input()) dis = list(map(int,input().split())) oil = list(map(int,input().split())) res = 0 i = 0 j = 0 tot_dis = sum(dis) while tot_dis != 0: if oil[i] >= oil[i+1]: res += oil[i]*dis[j] tot_dis -= dis[i] i += 1 j += 1 else: res += oil[i]*dis[j] tot_dis -= dis[j] j += 1 print(res) 일단 입력조건들을 만족시킨 후 기름값을 비교하여 문제를 풀었다. 지금 도시에서의 기름값과 다음 도시에서의 기름값중 지금이 기름이 더 비싸면 다음 도시에 갈 만큼만 기름을 넣어주고 그렇지..

알고리즘/Greedy 2021.09.22

백준 1541 파이썬(그리디)

# 잃어버린 괄호 n = input().split('-') first = sum(list(map(int,n[0].split('+')))) for i in range(1,len(n)): first -= sum(list(map(int,n[i].split('+')))) print(first) 최소의 값을 만들기 위해서는 처음에 나오는 수 이외에는 모두 빼기로 연산될 수 있도록 괄호를 넣어줘야 한다. - 기호가 나올때마다 괄호를 시작하고 닫아주면 된다. 예를 들어 55-40+30+80이면 55-(40+30+80) 55+40-30-50-60+50 이면 55+40-(30)-(50)-(60)+50 - 기호가 처음 나올땐 괄호를 열어주고 그 다음 - 기호가 나오면 괄호를 닫아주면 모두 빼는 연산이 된다. *그리디(gr..

알고리즘/Greedy 2021.09.22

백준 1931 파이썬(그리디)

백준1931 파이썬 맨 처음 풀었던 내 코드 전체 시간을 집합(set)으로 만들어주고 거기에서 차집합으로 하나하나 빼가면서 검사를 했다. 시간초과가 떠서 새로운 방법을 생각해보아야 했다. 아마도 for문이 중복되는 부분이 있어서 입력값이 커질경우 연산량이 많아지기 때문일 것이다. O(n^2) # 회의실 - 시간초과 # big o 표기법에서 어떻게 되는건지 n = int(input()) conf = [] time = set() for i in range(n): start, end = map(int,input().split()) conf.append([start,end,abs(start-end)]) for j in range(start,end+1): time.add(j) conf.sort(key=lambda..

알고리즘/Greedy 2021.09.22