개발(89)
-
[알고리즘/파이썬] 백준 1157 - 단어공부
1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 64%에서 틀렸다면 단어 2개짜리 넣어서 다시 테스트해보자. # 모두 대문자로 word = input().upper() # 알파벳 한개만 입력된경우. if len(word) == 1 : print(word) quit() h_word = {} # 알파벳별 dict for i in set(word): h_word[i] = 0 # 알파벳별 사용횟수 for i in word: h_word[i] += 1 # value별로 dict 정렬 h_word = sorted(h_word.items(),reverse..
2020.07.15 -
[알고리즘/파이썬] 백준 2606 - 바이러스
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어�� www.acmicpc.net 간단한 BFS문제. computers = int(input()) edge_num = int(input()) edges = [] for _ in range(edge_num): s,e = list( map(int,input().split())) edges.append([s,e]) que = [] visit = [] # 출발지 que.append(1) # BFS while True: # 큐가 비면 종료 ..
2020.07.14 -
[알고리즘/파이썬] 1697번 - 숨바꼭질
1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 www.acmicpc.net 쉽게 생각하고 갔다가 시간초과와 런타임에 두드려 맞았다. 시간 초과는 que에서 pop한 값이 이전에 한번이라도 방문했던 위치라면 이동을 수행하지 않도록 하면 해결된다. 런타임에러도 발생했는데 발생할수 있는 숫자의 범위를 제한하지 않아서 발생한 경우였다. ( 출력가능한 숫자 범위를 초과 하면서 에러 발생 ) if 2*x = 0: que.append(x-1) # 현재 depth + 1 depth.append(xc + 1) if 2*x
2020.07.13 -
[알고리즘/파이썬] 백준 2178 - 미로탐색
2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net BFS를 적용하면된다. DFS는 Stack이용, BFS는 Queue를 이용한다. NxM과 크기가 똑같은 리스트를 0으로 채워넣은 v_maze를 생성한다. v_maze에는 내가 해당위치에 몇번째 만에 도착했는지를 기록한다. n,m = map(int,input().split()) # 미로 maze = [] # 몇번째만에 방문했는지 기록하기 위한 list v_maze = [[0 for _ in range(m)] for _ in range(n)] for _ in range(n): tmp = input..
2020.07.07 -
[알고리즘/파이썬] 백준 1992번 - 쿼드트리
백준에서 분할정복(divide and conquer)과 관련된 기초적인 문제를 풀어봤다. 분할정복은 이름에서도 알고리즘 컨셉을 유추할 수 있다. 한개의 큰 문제를 다수의 작은 문제로 쪼개고 쪼개진 문제의 해답을 구해 그 값들을 모으면 큰 문제의 해답이 된다는 개념. https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1≤N ≤64의 범위를 가진다. 두 번째 줄부터는 길이 N 의 문자열이 N 개 들어온다. 각 문자열은 0 또는 www.acmicpc.net 위 문제를 풀기위해서 재귀를 많이 사용한다. 재귀는 아래 그림과 같이 함수내에서 똑같은 함수를 다시 호출하는 방법을 말한..
2020.06.14 -
[알고리즘/파이썬] 백준 7568번 - 덩치
백준에서 브루트포스로 분류된 알고리즘 문제를 풀어봤다. 브루트 포스는 모든 경우의 수를 다 확인해보는 방법. https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩� www.acmicpc.net 처음에는 뭣도 모르고 정렬해서 처리하려고 했는데, 등수가 판단 되지 않을경우는 동순위로 처리해야하기 때문에 아래와 같이 구현했다. # 입력 persons_cnt = input() person_list = [] for _ in range(int(persons_cnt)): a = ..
2020.05.31