목록전체 글 (307)
코딩하는 해맑은 거북이
해당 글은 백준 10814번 문제 '나이순 정렬'을 다룬다. 문제 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 설명 해당 문제는 정렬할 때 lambda를 사용해서 index가 0인 나이로만 정렬하면 쉽게 해결할 수 있다. 코드 n = int(input()) arr = [] for _ in range(n): arr.append(tuple(input().split())) arr.sort(key=lambda x:int(x[0])) for i in ra..
해당 글은 백준 7569번 문제 '토마토'을 다룬다. 문제 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 설명 이전에 풀었던 토마토 백준 문제에서 높이가 추가된 확장문제이다. 이전에 풀었던 BFS 처럼 dh만 추가하여 6가지 방향을 만들면 바로 해결할 수 있다. 코드 from collections import deque c, r, h = map(int, input().split()) boxes = [] for _ in ..
해당 글은 백준 10026번 문제 '적록색약'을 다룬다. 문제 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 설명 해당 문제는 DFS/BFS로 풀 수 있는 문제이고, 해당 글에서는 BFS로 해결하였다. BFS의 파라미터로 flag를 받아 그에 따라 적록색약인지 아닌지를 구별하여 if문으로 구분하였다. 적록색약인 경우(flag=1)는 아래의 조건문으로 코드를 구현하였다. if flag == 1 and (arr[x][y] == arr[nx..
해당 글은 백준 7576번 문제 '토마토'를 다룬다. 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 설명 해당 문제는 BFS로 해결할 수 있는 문제이다. n, m을 입력받을 때, 헷갈려서 c, r로 변수명을 바꿔서 입력받았다..! 주의할 점은 익은 토마토인 1의 모든 위치에서 바이러스처럼 전파되므로 queue에 익은 토마토의 위치를 모두 넣어준 상태에서 bfs를 진행해야한다. 코드 from collections impor..
해당 글은 백준 1926번 문제 '그림'을 다룬다. 문제 https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 설명 해당 문제는 DFS/BFS로 해결할 수 있고, 필자는 DFS로 구현하였다. 기존에는 지역변수로만 해결하였는데, 전역변수를 통해 더 쉽게 해결하는 방법을 발견하여 해당 코드도 함께 적어둔다. 재귀한계와 관련된 런타임에러가 계속 떴었는데, 이를 아래와 같이 크게 늘려주어야 성공이 뜬다. sys.setrecursionlimit(1000000) 코..
해당 글은 백준 11286번 문제 '절댓값 힙'을 다룬다. 문제 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 설명 해당 문제는 heapq 라이브러리를 사용해서 해결할 수 있다. 기본으로 최소 힙으로 되어있으므로, 절댓값 x와 기본 x를 같이 튜플 타입으로 넣어주고 정렬이 되는 기본값은 튜블의 인덱스 0번째 값이므로 해당 값을 pop 하고, 기본 x를 출력시에만 넘겨주면 된다. 그리고 sys 라이브러리의 input을 sy..