본문 바로가기

Algorithm/백준22

[BOJ] 7569 토마토 (Swift) Solved.ac 기준 실버 1 🥈 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 .. 2021. 8. 12.
BOJ 13413 오셀로 재배치 (파이썬) 실버 4 문제 풀이 처음에 '아 그럼 저 조건대로 그냥 풀면 되겠구나!' 하고 다른건 바꾸고 돌려가며 풀어보았다. 하지만 풀리지가 않았다.. 결국 또 해답을 보고야 말았다. 하지만 다음번엔 제발 이 풀이를 떠올리라고 정리해본다. (실버 4면서 떠올리기 개 어렵다) 결국엔 자리를 바꾸는 방법이 최소수를 구하기에 완벽하다. 일단 두 문자열을 입력받고, 같은 인덱스에 서로 다른 문자들을 체크해줄 리스트에 넣어준다. 그 후에, 뽑아온 리스트를 정렬해준다. 그러니까, 이런 상황일때 두개의 리스트에는 board_check = [ B, B, B ] 가 들어갔을테고, match_check = [ W,W,W ]가 들어갔을테다. 이상태에서 for 문을 돌리고, 인덱스의 문자가 같을 경우엔 0.5를 더하고, 다를경우엔 1을.. 2021. 8. 4.
BOJ 16930. 달리기 (파이썬 Python) Solved.ac 기준 플레티넘 2 달리기 문제 진영이는 다이어트를 위해 N×M 크기의 체육관을 달리려고 한다. 체육관은 1×1 크기의 칸으로 나누어져 있고, 칸은 빈 칸 또는 벽이다. x행 y열에 있는 칸은 (x, y)로 나타낸다. 매 초마다 진영이는 위, 아래, 오른쪽, 왼쪽 중에서 이동할 방향을 하나 고르고, 그 방향으로 최소 1개, 최대 K개의 빈 칸을 이동한다. 시작점 (x1, y1)과 도착점 (x2, y2)가 주어졌을 때, 시작점에서 도착점으로 이동하는 최소 시간을 구해보자. 입력 첫째 줄에 체육관의 크기 N과 M, 1초에 이동할 수 있는 칸의 최대 개수 K가 주어진다. 둘째 줄부터 N개의 줄에는 체육관의 상태가 주어진다. 체육관의 각 칸은 빈 칸 또는 벽이고, 빈 칸은 '.', 벽은 '#'으.. 2021. 6. 21.
BOJ 13913. 숨바꼭질 4 (파이썬 Python) Solved.ac 기준 🥇골드 4 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 첫째 줄에 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 둘째 줄에 어떻게 이동해.. 2021. 6. 20.
BOJ 13549. 숨바꼭질 3 (파이썬 Python) Solved.ac 기준 🥇 골드 5 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 0초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 문제 풀이 문제에서 주는 조건이 .. 2021. 6. 20.
15688 수 정렬하기 5 (C++) 이번에는 정렬 파트의 문제를 풀었다. 시뮬레이션 문제가 너무나도 어려워서 일단은 하나씩 차근차근. 일단 이 문제는 단순히 sort() 함수를 가지고 풀 수 있는 문제가 아니었다. 나 또한 "아 ㅋㅋ sort() 함수 만세!" 하면서 풀다가 시간초과라는 벽을 만나게 됐다. 이 문제는 Counting Sort의 원리를 이용하여 풀어야 한다. Counting Sort는 각 자리의 수가 얼마나 있는지 카운트를 하고 배열에 저장 시킨 뒤, 비내림차순일 경우 차례대로 각 배열의 개수만큼 출력 시키면 되는 정렬이다. #include using namespace std; #define MX 2000001 #define endl '\n' int freq[MX]; int n; int main() { ios::sync_wi.. 2021. 5. 4.

IT_learning's Commit