전체 글
-
[백준] 2564 - 경비원알고리즘 2023. 5. 16. 17:42
1. 문제 https://www.acmicpc.net/problem/2564 2564번: 경비원 첫째 줄에 블록의 가로의 길이와 세로의 길이가 차례로 주어진다. 둘째 줄에 상점의 개수가 주어진다. 블록의 가로의 길이와 세로의 길이, 상점의 개수는 모두 100이하의 자연수이다. 이어 한 줄 www.acmicpc.net 2. 접근 1. 문제가 하고자 하는 말은 동근이의 입장에서 특정 상점들까지 가는데 시계방향이 빠르냐 반시계 방향이 빠르냐를 구분하면 되는 것이다. 2. (0,0) 지점을 기준으로 시계방향으로 이동한다고 기준을 잡고, 동서남북에 위치해 있는 상점들에 들리면서 거리를 구한다. 3. 가장 마지막에 동근이의 위치가 나오니까 len(res) - 1 의 범위를 갖고 모든 상점을 res[-1]과 비교해서..
-
[백준] 2960 - 에라토스테네스의 체알고리즘 2023. 5. 16. 17:38
1. 문제 https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 2. 접근 1. while 문을 통해서 k의 범위를 체크해 가면서 가장 작은 값부터 그의 배수들을 0으로 바꿔가면서 풀면된다. 2. for문을 돌리면서 현재 가장 작은값으로 배열의 값이 나눠 떨어지면서, 그 값이 0이 아닌 경우는 배열의 해당 값을 0으로 바꾸면 된다 3. 풀이 # 2960 실버 4 import sys input = sys.stdin.readline n,k = map(int,input().split()) data = [i for i in range(2,n+1..
-
[백준] 2503 - 숫자야구알고리즘 2023. 5. 15. 17:24
1. 문제 https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 2. 접근 1. 처음에는 문제가 민혁이가 부르는 수가 몇 스트라이크, 몇 볼을 말하는 문제인지 알고 쉽다고 생각했지만, 그게 아니라 가능한 후보군들의 경우의 수를 구하는 문제라 나는 까다로웠다 2. 문제 3개의 숫자이고, 0은 3자리 중에 올수없고, 같은 수는 없다는 조건들로 check라는 배열을 만들어준다. 3. 데이터를 입력받고 , x,y에 대한 range(3)을 갖는 for문을 돌..
-
[백준] 2331 - 반복 수열알고리즘 2023. 5. 15. 17:19
1. 문제 https://www.acmicpc.net/problem/2331 2331번: 반복수열 첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다. www.acmicpc.net 2. 접근 1. 문제에 대한 이해가 어려웠는데, 결국 반복되는 구간이 생기면 그 구간을 전부 없애주면 된다는 의미 -> 알수있는점 : 반복되는 수 한개만 나오면 게임 끝 ( 왜냐하면 그 뒤부터는 같은 수들밖에 나올 수 없다 ) 2. 반복되는 수가 나올때까지 d 에 넣는다. 3. 반복되는 수가 나오면 그거까지 넣고, while문 종료 4. d의 마지막 수가 반복되는 수니까 d에 대한 for문 돌리다가 마주치면 for문 break하고 결과값 출력 3. 풀이 # 2331 실버4 import sys in..
-
[백준] 1449 - 수리공알고리즘 2023. 5. 15. 17:16
1. 문제 https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 2. 접근 1. 수리해야 하는 곳들은 sort() 시켜서 순서대로 접근한다 2. 무조건 수리되는 부분이 포함 되기때문에 cnt = 1로 잡는다 3. 현재 수리하는 부분이랑 다음 수리하는 부분의 길이차를 계속 더해가면서 L 의 길이보다 작다면 한개의 테이프로 감당 가능한것으로 이보다 거리가 크거나 같다면 테이프를 추가하면 된다 ( 같아도 테이프를 추가하는 이유는 양끝 0...
-
[백준] 2491 - 수열알고리즘 2023. 5. 15. 17:12
1. 문제 https://www.acmicpc.net/problem/2491 2491번: 수열 0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾 www.acmicpc.net 2. 접근 1. 문제가 같거나 증가하기 or 같거나 감소하는 구간의 길이중 최대를 구하라! 이다. 2. 우리는 LIS를 쉽게 떠올릴 수 있다. -> d = [1] * n 을 두고 n-1동안 증가 or 감소하는 지 체크해보면 된다 3. 풀이 # 2491 실버4 import sys input = sys.stdin.readline n = int(input()) nums = list(map(int..
-
[백준] 1713 - 후보 추천하기알고리즘 2023. 5. 13. 16:12
1. 문제 https://www.acmicpc.net/problem/1713 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net 2. 접근 1. 이 문제는 문제의 지문을 따라서 그대로 구현하면 된다. 2. 추천 받기 { candidate 는 dict임을 인지 } 2.1 -> 추천을 받은 것중 candidate에 없다 2.1.1 -> len(candidate) 과 n을 비교해서 n보다 크거나 같다 2.1.1.1 -> heap으로 가장 작은값을 제거 2.1.1.2 -> 새롭게 heap에 데이터 추가 2.2 ..
-
[백준] 14716 - 현수막알고리즘 2023. 5. 13. 16:07
1. 문제 https://www.acmicpc.net/problem/14716 14716번: 현수막 혁진이의 생각대로 프로그램을 구현했을 때, 현수막에서 글자의 개수가 몇 개인지 출력하여라. www.acmicpc.net 2. 접근 1. '이코테 - 음료수 얼려먹기' 의 로직과 일치한다. 다만 대각선을 대비해준다 -> board[x][y]이 1일때 글자가 이어지는 부분임을 인지해서 재귀적으로 dfs()를 호출해준다 2. 재귀함수가 대각선이 추가됨으로써 RecursionError를 대비해야 한다 3. 풀이 #14716 실버1 import sys input = sys.stdin.readline sys.setrecursionlimit(10**9) n,m = map(int,input().split()) board..