분류 전체보기
-
[프로그래머스 / Python] 시저 암호 | 초코더알고리즘/프로그래머스 2020. 1. 19. 19:51
문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한 사항 -공백은 아무리 밀어도 공백입니다. -s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. -s의 길이는 8000이하입니다. -n은 1 이상, 25이하인 자연수입니다. 입출력 예 s n result AB 1 BC z 1 a a B z 4 e F d 접근법 알파벳 a-z까지, A-Z까지 각각 리스트에 저장합니다. 만약 ' '(공백문자)라면 리스트 s_n에 ' ..
-
[백준 / Python] 1012번 유기농 배추 | 초코더알고리즘/백준 2020. 1. 18. 19:41
https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. ( www.acmicpc.net 접근법 1. dfs()함수 아래의 게시글을 참고하시면 DFS함수부분은 모두 동일합니다! https://sinsomi.tistory.c..
-
[백준 / Python] 2667번 단지번호붙이기 | 초코더알고리즘/백준 2020. 1. 18. 18:03
https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수 www.acmicpc.net 접근법 좌표문제를 풀때는 dx,dx라는 리스트를 선언해주어서 풀면 좀더 접근이 쉬울것같습니다. dx=[-1,0,1,0] dy=[0,1,0,-1] dx,dx가 나타내..
-
[백준 / Python] 2606번 바이러스 | 초코더알고리즘/백준 2020. 1. 17. 23:02
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어진다. 이어서 그 수만큼 한 줄에 한 쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다. www.acmicpc.net 접근법 저는 BFS를 이용해 풀었습니다! 이 링크를 참고하시면 돼요~ https://sinsomi.tistory.com/entry/%EB%B0%B1%EC%A4%80-Python-1260%EB%B2%88-DFS%EC%99%80-BFS-%EC%B4%88%EC%BD%94%EB%8D%94 다 같은데 다른..
-
[백준 / Python] 1260번 DFS와 BFS | 초코더알고리즘/백준 2020. 1. 17. 00:26
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. www.acmicpc.net 접근법 DFS와 BFS는 개인적으로 복잡하다고 느낀 코드이기 때문에 코드를 나누어서 세세히 설명해보겠습니다. 입력은 예제 입력1인 4 5 1 을 예로 들겠습니다. 1 2 1 3 1 4 2 4 3 4 1. N,M,V를 받아오고 '0'으로 이루어진 인접행렬 (N+1)*(N+1) 짜리 생성 ..
-
[알고리즘 / Python] BFS , DFS 인접리스트로 구현하기 | 초코더알고리즘/알고리즘 개념 2020. 1. 16. 20:21
BFS와 DFS의 개념에 대해 알아보겠습니다. 그래프와 노드 간 연결관계를 인접 리스트를 사용해 표현하겠습니다. 표현 방법에는 인접리스트와 인접행렬이 있습니다. # undirected graph graph = {'A': set(['B', 'C']), 'B': set(['A', 'D', 'E']), 'C': set(['A', 'F']), 'D': set(['B']), 'E': set(['B', 'F']), 'F': set(['C', 'E'])} 노드 개수에 비해 엣지 개수가 훨씬 적은 그래프라면 인접 행렬보다는 인접 리스트를 사용하는 게 탐색에 효율적이다. 전체 노드가 아닌 연결된 노드만 살펴보면 되기 때문이다. 또한, 인접 리스트는 엣지 개수에 비례하는 메모리만 차지하는 장점이 있다. 단, 두 노드의 연..
-
[백준 / Python] 1205번 등수 구하기 | 초코더알고리즘/백준 2020. 1. 16. 19:36
https://www.acmicpc.net/problem/1205 1205번: 등수 구하기 첫째 줄에 N, 송유진의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보다 작거나 같은 자연수 또는 0이다. 둘째 줄에는 현재 랭킹 리스트에 있는 점수가 비오름차순으로 주어진다. 둘째 줄은 N이 0보다 큰 경우에만 주어진다. www.acmicpc.net 접근법 새로 들어온 점수를 append()함수로 추가하고 정렬해줍니다. 그리고 새로 들어온 점수의 등수를 index()함수를 이용해 구해줍니다. 그런데 두번째 입출력 예와 같이 새로들어온 점수가 마지막 점수와 같으면서..
-
[백준 / Python] 2399번 거리의 합 | 초코더알고리즘/백준 2020. 1. 15. 17:16
https://www.acmicpc.net/problem/2399 2399번: 거리의 합 첫째 줄에 n(1 ≤ n ≤ 10,000)이 주어진다. 다음 줄에는 x[1], x[2], x[3], …, x[n]이 주어진다. 각각은 0 이상 1,000,000,000 이하의 정수이다. www.acmicpc.net 접근법 n정수들을 입력받아온 후 이중for문을 이용해 각각의 차의 절대값을 더해주었습니다. abs()함수를 쓰면 쉽게 음수를 양수로 바꿀 수 있었습니다. 실행은 되는데 시간초과가 나서 어떻게 고쳐야 할지 고민해봐야겠어요 ㅜ 나의코드 import sys temp=0 n=int(input()) nums=list(map(int,sys.stdin.readline().split())) #한줄만 입력받을땐 그냥 sp..