본문 바로가기

Algoritm

(20)
[백준] 1991번 : 트리 순회 (python) https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 아이디어 Node class와 BinaryTree class를 이용하여 각각의 node를 따로 저장해두고 root node로부터 엮어나가기 n = int(input()) i = 0 class Node: def __init__(self, item): self.item = item self.left = None self.right = None class BinaryTree(): def __..
[백준] 10808번 : 알파벳 개수 아이디어 : 미리 빈 리스트를 만들어두고, 알파벳의 '위치'를 표시하기 s = input() lst = [0]*26 for i in s: lst[ord(i)-97]+=1 for i in lst: print(i,end= ' ') ord() input : 하나의 문자 output : 해당 문자의 유니코드 정수 ex) ord('a') = 97
[백준] 4344번 : 평균은 넘겠지 (python) import sys input = sys.stdin.readline c = int(input()) for _ in range(c): n = list(map(int,input().split())) total = 0 for i in range(1,n[0]+1): total += n[i] avg = total/n[0] over = 0 for i in range(1,n[0]+1): if n[i]>avg: over += 1 ratio = over/n[0]*100 print('%.3f%%'%ratio) sys.stdin.readline으로 입력을 받게되면 개행문자(\n)가 포함된 입력값을 받게된다. 그런데 여기서는 strip을 안써도 되네? 왜그럴까?
[백준] 11729번 : 하노이 탑 이동 순서(python) 아이디어 1 - 원판들이 있는 장대의 번호(start = 1), 원판들을 옮기고 싶은 장대의 번호(end = 3)을 알고 있음. - 그럼 남은 장대의 번호는 1+2+3 = 6이기때문에, 6-start-end 로 구할 수 있다! 아이디어2 사실 아직까지는 재귀 알고리즘이 한번에 생각나지 않고, 저렇게 작은 숫자를 대입해서 직접 그려봐야 반복되는 것이 보인다. import sys input= sys.stdin.readline def hanoi(n, start, end) : if n == 1 : print(start, end) return hanoi(n-1, start, 6-start-end) print(start, end) hanoi(n-1, 6-start-end, end) n=int(input().stri..
[백준]10870번: 피보나치 수5(python) N = int(input()) def pibo(n): if n == 0 : return 0 elif n == 1: return 1 return pibo(n-1)+pibo(n-2) print(pibo(N)) 코드 자체는 설명할 게 없을 정도로 간단하다. 그런데,, 문제는 처음에 jupyter notebook으로 코드를 작성했는데 n = int(input())을 하는데 ValueError: invalid literal for int() with base 10: '' 다음과 같은 에러가 발생했다. 무슨.. 값을 입력받기도 전에 에러부터 띄우는건지.. 아직 해결하지 못했다. ValueError: invalid literal for int() with base 10: '1.2' 이런식으로 에러가 뜨면, 소수를 입..
[백준] 2178번 : 미로 탐색 (python) * 참고서적 : http://www.yes24.com/Product/Goods/91433923 이것이 취업을 위한 코딩 테스트다 with 파이썬 - YES24 나동빈 저자의 유튜브 라이브 방송 https://www.youtube.com/c/dongbinnaIT 취준생이라면 누구나 입사하고 싶은 카카오 · 삼성전자 · 네이버 · 라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생 www.yes24.com https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net # (1,1)에서..
[백준] 1874번: 스택 수열 (python) https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 이 문제의 경우, 처음에 손으로 직접 적어보고서 하니까 코드를 더 잘 적을 수 있었다. 경우를 크게 3가지로 나누었고, 마지막에 스택에 원소가 남아있을 경우 'NO'를 출력하도록 하였다. 스택이 비어있을 경우, 즉 처음의 상황(push) 스택의 맨 위의 원소가 입력받은 숫자보다 더 작을 때(push) 스택의 맨 위의..
[백준] 1021번: 회전하는 큐 (python) https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net deque을 import 해서 사용했다. 문제를 이해하는데 시간이 좀 걸렸다 예제 입력 2를 시행하면 내 생각엔 5가 출력인데, 왜 8인지.. --> 이 문제에서는 뒤에서는 뺄 수 없다! 앞에서만 원소를 뺄 수 있다 queue : FIFO deque : 양방향에서 삽입, 삭제 가능 (but 이문제에서는 뒤에서 빼는 기능은 사용하지 않음!) from collections import deque ..