본문 바로가기

전체 글

5. Tree 전위순회 중위순회 후위순회 (백준 1991 파이썬) 트리도 오랜만이다.. 실버 1인데 반해 정답률도 높고 어렵지 않은 문제이지만, 혼자 잘 풀어낸 기념으로 작성 문제에 사실상 개념이 다 적혀있지만 이진 트리 : 한 노드에 자식 노드가 최대 2개인 트리 전위 순회(preorder) : 루트 -> 왼쪽 자식 -> 오른쪽 자식 중위 순회(inorder) : 왼쪽 자식 -> 루트 -> 오른쪽 자식 후위 순회(postorder) : 왼쪽자식 -> 오른쪽자식 -> 루트 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.. 더보기
4. 브루트포스 그런데 최소공배수를 곁들인 (백준 6064 파이썬) (백준 1476 파이썬) 실버1인데 6064번 잘 풀려서 쓰는 글 맞습니다. 근데 lcm 함수를 곁들인.. 전에 아주 열심히 최대공약수, 최소공배수 구현했었는데, 물론 헛된건 아니지만 함수가 있었음에 꽤나 허무했던 기억이 있어서..^^ 이번에는 최소공배수 함수를 써버렸다..☆ import math 안에 최대공약수 : Greatest Common Divisor : math.gcd(A, B) 최소공배수 : Least Common Multiple : math.lcd(A, B) 여튼 문제는 아래와 같다. https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어.. 더보기
3. 이제는 친숙해진 DFS, BFS (백준 1260 파이썬) 처음 배웠을 때는 충격과 공포였는데, 이제는 오히려 안심이 되는(?) 친근해진 DFS, BFS다. 생각보다 개념은 단순하게, 트리모양을 보면 이해가 빨리 되고, 실제 문제를 풀 때 내가 가장 쉽게 이해한 방법은: DFS는 stack, 그리고 재귀는 결국 stack이므로 재귀로 풀 수 있음 BFS는 queue, 그래서 더 쉽긴한데 pop(0)이 좀 효율성이 안좋다 이외에 좀 주의해야 하는 부분은 입력 값을 어떻게 저장하는가 부분이다. 사실 그래프 유형과 DFS BFS 유형도 비슷한 것 같고,, 재귀로 푸는 문제들도 서로서로 비슷한 것 같고.. 약간 딱 나눠서 할 수 있나 싶은데 (백준에서도 브루트포스 재귀로 분리되어 있는 문제가 DP로 풀기도 하고..) 여튼 그래프 형식은 노드, 간선, 시작점 입력에 익숙.. 더보기
2. 이맛에 푼다 Brute Force (백준 3085 파이썬) feat. 반례 사실 3085번 내 풀이가 브루트포스 방식이 맞는지에 약간 확신은 없지만, 일단 백준 분류에서 브루트포스로 뜨기 때문에 그렇게 적었다. 알고리즘을 놓은지 어연 6개월..(사실 6개월 훨씬 넘은듯) 정말 흐릿해진 기억 저편에 남은 delta값 사용 방식을 가지고 혼자 이렇게 저렇게 몇시간을 시도한 끝에, 기대하지 않은 '맞았습니다!!' 를 보는 희열은 참.. 행복하네.. 2시간 넘게 걸렸지만 역시 이게 맛이구나 하는 생각이 든다. 정말 자신감 바닥이었는데 혼자 오래걸려도 해결하고 나니 다시 자신감 뿜뿜 의욕 뿜뿜 열심히 준비해서 꼭 패스하고 싶ㄷㅏ 물론 정말 잘 푼 사람들이 많겠지만 일단 성공했으니 또 적어본다. https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제.. 더보기
1. DP 이것은 무엇인가 (백준 1463 파이썬) DP : Dynamic Programming 내 머릿속에 일단 DP는 피보나치이다. 한 번 나왔던 값은 저장을 해서 다시 구하는 시간을 절약할 수 있다는 것이 핵심이다. Top-down(하향식) 방식 : 내려가며 재귀 Bottom-up(상향식) 방식 : 올라가며 반복문 나는 재귀를 처음 이해한 후에 재귀에 빠져서 하향식을 더 선호했는데, 사실 이제 다 잊어버리기도 했고(...) 문제마다 어떤 방식이 더 좋은지가 애초에 달라질 수 있는 것 같다. 백준 1463번 풀이를 하며 이해해보도록 노력하겠다. https://www.acmicpc.net/problem/1463 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, .. 더보기
파이참 .py 파일 인식 오류 해결법 어제 갑자기 파이참에서 오류가 났다. 같은 디렉토리 안에 있는 파일인데도 sol1.py 파일들은 모두 파이썬 표시도 안뜨고 파이썬으로 인식되지 않는 것 같았다. 정말 해결하고자 서치를 꽤 많이 했는데도 답을 찾지 못했고, 무엇보다 뭐라고 검색해야할지가 어려웠다.ㅠㅠ 에러 창이 뜨면 내용을 검색하면 되는데ㅠㅠ 그래서 결국 답을 찾아내고 나서 글을 써야겠다고 마음먹었다! 검색어: .py인식, 파이참 코드 색상, 파이참 코드 회색, 파이참 인식 에러 등등.. 우선 발생한 문제는 아래와 같다. 해결방법은 아래의 stackoverflow 문서를 통해 얻었다. https://stackoverflow.com/questions/21263786/change-file-type-in-pycharm/21281563#21281.. 더보기
1.10. (파이썬 공부하기) 파이썬 공부 주말은 나름 열심히 공부했다. 왜 피보나치는 해도해도 모르겠을까..? def fb_fucn(num): if num 더보기
1.6. 일상(Python) 파이썬 공부 C++만 배운 적이 있다보니 그거 얼마나 배웠다고 python과 문법 차이가 종종 있어서 헷갈린다. 예를 들어 ASCII 값을 문자로 출력 원할때는 %c로 하면 되는데 문자를 ASCII 값으로 출력 원할때는 (%d로 하면 될줄 알았는데 안되고) ord() 함수를 사용해야 한다. (참고로 반대로 문자-> ASCII는 chr() 함수) 그러다보니 역시 구글링을 정말 많이 이용하게 되는 것 같다. 코딩 정보의 바다 구글.. 오늘 알게 된 사소한 정보) 1) 문자 구별 함수 .isupper 대문자 구별하는 함수 .isalpha 문자/숫자 구분하는 함수, 한글까지 구분하려면 .encode() if a.encode().isalpha(): # 인코딩 결과가 알파벳인 경우 이런 것들이 한번에 print().. 더보기