자료구조,알고리즘(Python)/백준 14

9461:파도반 함수(DP)

https://www.acmicpc.net/problem/9461  나선으로 돌아가면서 커지는 도형의 가장 긴 변의 길이는 구하는 문제인데, 이건 딱 봐도 Dp구나 싶어서 n번째의 길이와 그 앞의 길이와의 관계들을 살펴보았다. 내가 직관적으로 그림을 통해 확인했던 건 dp[i] = dp[i-1]+dp[i-5]였기 때문에 기본 값들을 세팅해주고 식을 넣어 문제 풀이를 하였다.      * 나의 코드t = int(input())dp =[0]*101dp[1]=1dp[2]=1dp[3]=1dp[4]=2dp[5]=2dp[6]=3dp[7]=4dp[8]=5for _ in range(t): n = int(input()) if n>8: for i in range(8,n+1): d..

단어 공부:1157(Python)

이번 주말은 여태까지 틀린 문제들을 모아놓고 모두 해결해보기로 했다. 그중에서 이 문제는 딕셔너리를 활용한 문제이다.본인이 딕셔너리가 약하다고 판단되기에 블로그에 내 풀이와 다른 사람의 풀이, 그리고 문제를 풀 때 자주 활용되는 딕셔너리의 성질과 활용에 대해 알아보고자 이 문제를 블로그에 글을 쓰게 되었다. https://www.acmicpc.net/problem/1157 1. 내 풀이a = input()word=a.lower()dict1 = {}list1 = []for i in word: if i not in list1: list1.append(i) dict1[i] = 1 else: dict1[i] += 1sorted_dict = sorted(dict1...

1032:명령 프롬프트

2주 간의 긴 여행과 휴식기를 지나고 거진 한 달만에 하는 코딩이라 그런지 감을 많이 잃은 것 같다.그런 김에 이번주는 solved.ac의 브론즈 2~실버3까지의 문제를 매일매일 풀어주면서 감을 찾아보려고 한다.   1. 처음에 틀린 풀이num = int(input())list1 = []for _ in range(num): word = input() list1.append(word)ans = list1[0]print(list1)for i in range(len(list1)-1): for j in range(len(ans)): if ans[j] != list1[i+1][j]: fin = ans.replace(ans[j], '?')print(fin)"""ans..

1547 : 공[Python]

2주 간의 터키 여행 이후 오랜만에 파이썬으로 백준 문제 풀이를 해봤다.오랜만에 하는거니까 몸풀기로 좀 쉬운 문제를 골랐다. 문제풀이num = int(input())ans = 1for _ in range(num): a, b = map(int, input().split()) if a == ans: ans = b elif b == ans: ans = aprint(ans) 공은 처음에 1번에 있고 그것이 바꿔치기하면서 계속 바뀐다는 성질을 이용하였다. 가장 직관적이고 간단한 풀이인 것 같다.

11582 : 치킨 TOP N (Python)

https://www.acmicpc.net/problem/11582 문제 풀이 코드n = int(input())list1 = list(map(int, input().split()))k = int(input())num = n // klist2 = []for i in range(0,n,num): listn = sorted(list1[i:i+num]) for j in listn: print(j, end=' ') 분할 정복 알고리즘을 공부한 후, solved.ac를 이용해서 분할 정복 알고리즘 카테고리에 있는 문제들 중 만만해보이는 실버 문제로 선택했다. 재귀를 활용해서 문제를 풀려고 했지만 그러지 못했다. 그냥 재귀를 사용하지 않고 간단하게 문제를 풀이했다.      * Referenc..

Python_(Binary search에 관한 문제들)

서론이제 공부하고 있는 자료구조/알고리즘 주제로 슬슬 백준 문제풀이를 해볼 시간이 왔다!! 1. 10815: 숫자카드https://www.acmicpc.net/problem/10815코드 및 문제풀이def binary_search(some_list,target): left, right = 0, len(some_list)-1 while left some_list[mid]: left = mid+1 return Nonen = int(input())list1 = list(map(int, input().split()))list1.sort()m = int(input())list2 = list(map(int, input().split()))list3 = ['0']*mfor ..

(백준) 1463 : Python

https://www.acmicpc.net/problem/1463 1463번은 결과값 자체를 도출하는 것은 어렵지 않으나 시간 제한이 걸려있어 알고리즘 지식을 동반해 푸는 것이 핵심인 문제이다.이 문제를 가져온 이유는 가장 최근에 공부한 Dynamic programming이 사용되는 문제이기 때문디ㅏ. 동적 계획법은 상향식과 하향식이 있는데, 상향식은 제일 작은 인덱스의 수부터 목표하는 값으로 향하는 것이고 반대로 하향식은 맨위의 값에서 재귀로 제일 작은 인덱스를 향하는 것이다. 동적 계획법은 장점 중 메모리 공간을 활용하여 시간 복잡도를 줄일 수 있다는 것을 활용해서 문제에 접근하면 된다.이를 메모이제이션 방법이라고 한다. (값을 기억해서 문제를 푼다고 이해해두자.) 메모이제이션 방법으로 문제를 풀 때..