Loading...
2021. 7. 27. 22:55

[Python] BOJ 1749 - 점수따먹기

https://www.acmicpc.net/problem/1749 1749번: 점수따먹기 동주는 항상 혼자 노느라 심심하다. 하지만 혼자 놀기의 고수가 된 동주는 매일매일 게임을 개발하여 혼자놀기의 진수를 우리에게 보여준다. 어느 날 동주는 새로운 게임을 개발하였다. 바로 점 www.acmicpc.net # 일차원 배열 상에서의 누적합이 아닌 2차원 배열에서의 누적합을 구해 푸는 문제이다. # 우선 누적합 배열을 만들어야 하는데, 누적합을 일일이 반복문을 돌며 구하면 "가로 x 세로"(0 < 가로

[Python] BOJ 20444 - 색종이와 가위

https://www.acmicpc.net/problem/20444 20444번: 색종이와 가위 첫 줄에 정수 n, k가 주어진다. (1 ≤ n ≤ 231-1, 1 ≤ k ≤ 263-1) www.acmicpc.net 1. 색종이를 자를 때 한 변에 평행하게 자른다는 말은 -> 가로 또는 세로 방향으로만 자를 수 있다는 뜻 따라서 색종이를 n번 자르는 것은 가로방향 x번, 세로방향 n-x번으로 자를 수 밖에 없다. (0 1 if f(mid) == k: print("YES") sys.exit(0) if f(mid) > k: hi = mid else: lo = mid + 1 print("NO") (solved.ac 티어: 골드 5) # 처음에 반대로 생각해 k값을 소인수분해 한 뒤, 소인수에 n이 있는지 없는..

2021. 7. 26. 00:11

[Python] BOJ 14719 - 빗물

https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net # 처음에 '스택'을 사용해서 풀려했지만, 생각보다 까다로워서 다른 방향으로 생각을 해봤다. # 결국 이 힌트처럼 양쪽에 더 높은 블록이 존재하면 빗물이 고인다. 따라서 반복문을 돌며 현재 블록의 왼쪽 값 중 최대높이, 오른쪽 값 중 최대높이를 구해 그 두 값중 작은 값이 현재 블록높이보다 크다면, 큰 값은 당연히 블록높이보다 크므로 작은 값 - 현재 블록 높이를 ans에 더해준..

[Python] BOJ 2003 - 수들의 합 2

https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net # 투 포인터 기초문제이다. # left, right라는 포인터 두 개를 이용해 진행한다. 1. left를 0, right를 1로 초기 설정하고 num의 첫번째 값이 s이면 ans를 1부터 시작하고 아니면 s는 0으로 시작한다. 2. while문 안에서 left와 right포인터가 모두 N이라면 둘 다 맨 오른쪽(맨 끝)까지 간 것이므로 break 2-1...

[Python] BOJ 22114 - 창영이와 점프

https://www.acmicpc.net/problem/22114 22114번: 창영이와 점프 창영이는 버스에서 내린 뒤 회사로 걸어가고 있다. 창영이가 걸어가는 길은 대부분 회색 보도블럭으로 포장되어 있는데, 가끔씩 빨간 보도블럭이 놓여있을 때가 있다. 창영이는 어린 시절 빨간 www.acmicpc.net # 모든 케이스를 다 확인하기에는 N^2이 소요되어서 시간초과가 날 것이라 예상해 '투 포인터' 알고리즘을 사용해서 풀었다. (이 코드가 투 포인터가 맞나 싶긴한데...) 1. 반복문을 돌며 i가 N-1이거나 j가 N-1이 되면(마지막까지 도달한다면) break를 한다. 2-1. i, j를 0, 0으로 설정하고 L[j]가 K보다 작거나 같으면 cnt와 j를 1증가시킨다. 2-2. L[j]가 K보다 ..

[Python] BOJ 12761 - 돌다리

https://www.acmicpc.net/problem/12761 12761번: 돌다리 동규와 주미는 일직선 상의 돌 다리 위에있다. 돌의 번호는 0 부터 100,000 까지 존재하고 동규는 \(N\)번 돌 위에, 주미는 \(M\)번 돌 위에 위치하고 있다. 동규는 주미가 너무 보고싶기 때문에 최대 www.acmicpc.net # "현 위치에서 +1칸, -1칸을 이동할 수 있고, 스카이 콩콩을 이용해 현 위치에서 A나 B만큼 좌우로 점프할 수 있으며, 순간적으로 힘을 모아 현 위치의 A배나 B배의 위치로 이동을 할 수 있다." -> 동규가 이동할 수 있는 경우의 수는 다음과 같다. (현재 동규위치: x) (x+1, x-1, x+A, x-A, x+B, x-B, x*A, x*B, x*(-A), x*(-B)..

[Python] 프로그래머스 - 거리두기 확인하기

https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr # 최근 5월 "2021 카카오 채용연계형 인턴십" 코딩테스트에 출제된 따끈따끈한 문제이다..

[Python] BOJ 2110 - 공유기 설치

https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net # 이분탐색 문제이다. (이분탐색 문제는 아이디어 떠올리기가 매우 힘든 것 같다..) # 집의 좌표가 0부터 10억사이이므로 그 사이에서 이분탐색으로 '간격' (가장 인접한 두 공유기 사이의 거리)을 찾아가면 된다. import sys input = sys.stdin.readline N, C = map(int,input().split()) wif..