본문 바로가기

전체 글

[백준][Python][1920][이분탐색] 수 찾기 문제 : https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. www.acmicpc.net 이분 탐색 문제다. 이분 탐색 알고리즘을 구현하는 문제다. 행렬을 정렬한다. left, right를 각각 0, 길이-1로 한다. left r인 상황이 되어 loop탈출 -> -1 실패 반환 import sys n = int(sys.stdin.readline.. 더보기
[백준][Python][2583][BFS] 영역 구하기 문제 : https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점의 x, y좌표값이 빈칸을 사이에 두고 차례로 주어진다. 모눈종이의 왼쪽 아래 꼭짓점의 좌표는 (0,0)이고, 오른쪽 위 꼭짓점의 좌표는(N,M)이다. 입력되는 K개의 직사각형들이 모눈종이 전체를 채우는 경우는 없다. www.acmicpc.net BFS 문제다. 입력에 맞게 벽을 맵에 넣는것, 출력이 살짝 다른것 빼고 https://www.acmicpc.net/problem/2667 .. 더보기
[백준][Python][10026][BFS] 적록색약 문제 : https://www.acmicpc.net/problem/10026 10026번: 적록색약 문제 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어져 있는데, 구역은 같은 색으로 이루어져 있다. 또, 같은 색상이 상하좌우로 인접해 있는 경우에 두 글자는 같은 구역에 속한다. (색상의 차이를 거의 느끼지 못하는 경우도 같은 www.acmicpc.net BFS 문제다. 물론 더 효율적이고 간단한 방법은 분명히 있을 것이다. 하지만 난 일단 맞으면 끝이라는 정신으로 문제를 풀기 .. 더보기
[백준][Python][7562][BFS] 나이트의 이동 문제 : https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l × l이다. 체스판의 각 칸은 두 수의 쌍 {0, ... www.acmicpc.net BFS 문제다. 전형적인 길찾기 문제에서 움직이는 위치만 달라진 문제다. 원래 십자모양으로 움직일 때는 dx = [1,-1.. 더보기
[백준][Python][2667][BFS] 단지번호붙이기 문제 : https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수 www.acmicpc.net BFS 문제다. 기본적으로 쓰는 queue와 방문 확인용 v 배열은 그대로 쓴다. 그리고, 2중 for를 통해 모든 맵에서 bfs를 시작한다. 이때, 방문.. 더보기
[백준][Python][1012][BFS] 유기농 배추 문제 : https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. ( www.acmicpc.net BFS 문제다. 맵에서 섬이 몇개냐, 단지가 몇개냐 하는 문제는 bfs로 풀 수 있는것 같다. 왜 ~인 것 같다 면 난 이런.. 더보기
[백준][Python][15970][구현] 화살표 그리기 문제 : https://www.acmicpc.net/problem/15970 15970번: 화살표 그리기 직선 위에 위치를 나타내는 0, 1, 2, ...와 같은 음수가 아닌 정수들이 일정한 간격으로 오른쪽 방향으로 놓여 있다. 이러한 위치들 중 N개의 위치에 하나씩 점들이 주어진다(). 주어진 점들의 위치는 모두 다르다. 두 점 사이의 거리는 두 점의 위치를 나타내는 수들의 차이이다. 에서는 4개의 점이 주어지고 점 a와 b의 거리는 3이다. 각 점은 N개의 색깔 중 하나를 가진다. 편의상, 색깔은 1부터 N까지의 수로 표 www.acmicpc.net 구현 문제다. 우선 입력을 정렬한다. 겹치는게 없으므로 정렬 조건은 설정 안해도 된다. 입력받은 좌표를 하나하나 돌아가면서 현재 좌표보다 왼쪽에 있는 것.. 더보기
[백준][Python][17609][구현] 회문 문제 : https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 구현 문제다. 이 문제는 회문, 한글자만 삭제하면 되는 회문(유사회문), 일반 문자열 이 셋을 구별해야한다. 나는 이런 순서로 풀었다. s 가 회문인가 -> palincheck 0출력 s 가 뒤쪽 문자중에 하나만 지우면 되는 유사회문인가 left-fixed l,r 을 각각 0, 문장 맨 끝이라 할때 l+=1, r-=1 을 하면서 같은지 확인하는데 만약 다르면 r-=1만 하고 한번만 지우는지 체크하는 변수에 저장한다 c.. 더보기