sw역량 5

[백준 2578] 빙고

문제 https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 알고리즘 1. 사회자가 불러주는 수의 값을 체크 할 수 있도록 빙고판과 같은 크기의 배열을 생성한다 2. 사회자가 값을 부를 때 마다 체크 한다 3. 체크 한 값이 12 이상일 때 마다 행과열의 합을 구해서 각 한 줄 씩 빙고가 성립한지 확인한다 4. 3줄이상 달성했을 경우 센 횟수 값을 출력하며 종료한다 코드 import sys def Input_Data(): readl = sys.stdin.readli..

Algorithm 2024.02.10

[백준 2583] 영역 구하기

문제 https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 알고리즘 1. 주어진 사각형의 좌표를 조회해서 해당영역을 그래프에 1로 채워준다 (초기화 0으로) 2. 2차원 그래프를 조회해서 0으로 시작되는 구역이 나올때 section의 값을 올려준다 3. bfs순회시, 방문때 이미 간 곳은 2로 바꿔준다 코드 import sys from collections import deque def input_data(): readl = sy..

Algorithm 2024.02.04

[백준 6236] 용돈 관리

문제설명 https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net 알고리즘 1. 사용할 수 있는 돈의 최소는 i일 동안 사용할 금액 중에 가장 큰 값, 그리고 돈의 최대는 모든 사용할 돈의 합이다 2. 해당 두 값으로 이분탐색을 진행한다 3. 이분탐색을 할 때, 돈 인출 수를 세어보고 더 많이 인출해야하는 경우 돈을 키우고 그렇지 않은 경우 금액을 줄인다 코드 import sys def Input_Data(): readl = sys.stdin.readline..

Algorithm 2024.01.31

[백준 3055] 탈출

문제설명 https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 알고리즘 1. 그래프 정보 입력 2. 고슴도치 위치, 홍수 지역 정보 저장 3. 홍수 정보를 통해 1분당 홍수 그래프에 반영 4. 고슴도치 이동 반복 코드 import sys from collections import deque def Input_Data(): R, C = map(int,readl().split()) map_forest = [[0] + list(readl()[:-1]) + [0] if 1

Algorithm 2024.01.31

[백준 2531] 회전 초밥

문제설명 https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net 알고리즘 이번 문제는 단순하게 반복문으로 결과를 구해낼 수 있다 하지만 시간 제약이 있기 때문에 sliding window를 사용해야한다 k개를 확인해서 초밥의 갯수를 세기때문에 1칸씩 옮겨가며 연산한다 이때 모든 초밥을 다 다시세면 반드시 시간초과가 발생하기 때문에, 새로 추가되는 초밥만 세고 먹을 수 없는 초밥은 빼는 것이 문제의 해결 방식이다 ..

Algorithm 2024.01.28