백준 1018 체스판 다시 칠하기 풀이 python, java
OnlineJudge2021. 1. 30. 00:34백준 1018 체스판 다시 칠하기 풀이 python, java

문제로이동 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 목차 문제 설명 8*8 크기의 체스판을 완전탐색합니다. 즉, 크기가 8*8보다 더 큰 경우 위치를 옮겨가며 확인해야 합니다. 왼쪽부터 오른쪽으로 스캔하듯 모두 훑어줍니다. 가로 탐색이 끝났다면 이제 세로축을 한 칸 증가시켜야겠죠? 한 칸 내린후 위와 동일하게 오른쪽으로 쭉 가야합니다. 어떤 로직인지 이해 하셨나요? 그럼 최종적으로 아래 그림처럼 탐색을 마칩니다. 자. 이제 위와같은 체스판이 아닌 흑백이 섞인(또는 뒤죽박죽) 체스판 모양이 입력됩..

백준 10096 세 친구 풀이 python, java
OnlineJudge2021. 1. 29. 22:49백준 10096 세 친구 풀이 python, java

문제로이동 10096번: 세 친구 준규, 해빈, 진욱이는 다음과 같은 게임을 한다. 먼저, 준규가 문자열 S를 고른다. 그 다음, 해빈이는 S의 뒤에 S를 붙인 새로운 문자열 T를 만든다. 마지막으로 진욱이는 문자열 T의 어딘가(시작이 www.acmicpc.net 목차 테스트케이스 백준에서는 첫 번째 테스트케이스만 제공됩니다. NOT IMPOSSIBLE과 NOT UNIQUE 조건이 명시는 되어있는데 뭔가 이상해서 찾아보니 입력이 안된건지 더 있길래 가져왔습니다. 참고하시면 됩니다. 문제 설명 자세한 풀이 방법은 소스코드 Python의 주석처리를 참고하시기 바랍니다. 처음엔 모든 알파벳이 같은 경우를 생각하지 않고 아니 이게 맞는데 왜 틀려?? 라고 생각했다가 3번의 WA를 받고 깨우쳤습니다.. Pytho..

백준 1002 터렛 풀이 python, java
OnlineJudge2021. 1. 27. 23:35백준 1002 터렛 풀이 python, java

문제로이동 목차 문제 설명 알고리즘 문제라기 보다는 수학에 많이 가깝습니다. 두 원을 그려서 교점(겹치는 점)을 찾아내는 문제이며, 정답률이 많이 낮은 것으로 봐서는 여러 경우의 수를 고려하지 못했던 것 같습니다. 물론 저도 정답률 낮추는 데 한 몫 했습니다 ^^ 소스코드도 위와 같은 순서로 분리되어 있습니다. 1. 원이 완전히 겹치는 경우 (출력값 0) 두 원의 거리가 0이면서 반지름도 같은 경우를 말합니다. 2. 원이 한쪽 면만 닿는 경우 (출력값 1) (내접) 두 원의 거리 == 원1 반지름 + 원2 반지름 단, 원1 반지름과 원2 반지름의 길이를 비교해서 작은 값, 큰 값으로 분류해도 되지만 편의상 절대값 abs를 이용했습니다. (외접) 두 원의 거리 - r1 = r2 아래 그림을 참고 바랍니다...

백준 2217 로프 풀이 python, java
OnlineJudge2021. 1. 20. 22:59백준 2217 로프 풀이 python, java

문제로이동 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 목차 문제 설명 그리디 문제는 규칙을 파악하는게 중요합니다. 로프 여러개를 사용해 병렬로 무게를 들 수 있습니다. 이 때, W/K(갯수) 만큼의 무게가 걸리게 됩니다. 즉, {나를 포함한 나보다 무게가 큰 로프 수 * 내 로프 = 최종 무게}가 성립됩니다. 1 5 3 2 4 이렇게 입력되었다고 가정하면 이 Array를 정렬해 줍니다. 5 4 3 2 1 내림차순이 편하긴한데, 오름차순도 index 접근값만 바꿔주면 되기 때문에 크게 상관없습니다..

백준 2638 치즈 풀이 python,java
OnlineJudge2021. 1. 9. 22:43백준 2638 치즈 풀이 python,java

문제로이동 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5≤N, M≤100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 표 www.acmicpc.net 목차 문제 설명 하도 안풀려서 풀이를 볼까 말까 하다가 끝까지 붙잡고 풀어냈다. 공기는 0, 치즈는 1로 표시된다. 맨 가장자리는 반드시 공기층이 있다. 즉, 매 반복마다 bfs(0,0)만 돌리면 된다는 말이다!! 이미 방문한 구역을 visited로 체크해두고 공기층에 2번 노출되면 그 치즈는 없애버린다. 그리고 반드시!! 치즈가 없어진 구역은 방문한 것으로 표기해둔다. 그렇지 않으면 그 다음 큐가 돌아갈 때 방문을 하면서 다음 턴에 없어져야..

백준 13913 숨바꼭질4 BFS
OnlineJudge2021. 1. 9. 17:50백준 13913 숨바꼭질4 BFS

문제로이동 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 목차 런타임에러 숨바꼭질, 숨바꼭질2, 숨바꼭질3에 이어 연계되는 문제입니다. 문제에 대한 자세한 설명은 없으니 미리 풀어 보시는 것을 권장합니다!! 사실 어렵지 않은 BFS 문제인데 왜 런타임 에러가 뜨는지 이해를 못하다가 1월 7일 BOJ에서 런타임 에러 업데이트로 이유를 보여주기 시작했습니다.. RecursionError.. 재귀 함수가 limit에 부딪혀 발생하는 문제였죠. 이 이유임을 확인하고 바로 통과했습니다..

백준 16236 아기상어 풀이 python, java
OnlineJudge2021. 1. 3. 16:37백준 16236 아기상어 풀이 python, java

문제로이동 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 목차 시작하기 전에 골드4의 난이도임에도 불구하고 개인적으로 많이 헤맸던 문제입니다. 오기가 생겨 이틀 정도 틈틈이 시간투자를 했지만 결국 검색을 통해 해결했습니다. 문제 설명이 꽤 복잡해 보이지만 한 번 자세히 보면 생각보다 간단한 문제이니 처음 읽을 때 유심히 보시는 것을 추천합니다. 문제 설명 상어는 9로 나타낸다. 아무 것도 없는 공간은 0으로 나타낸다. 1~6은 물고기의 크기를 나타낸다. 상어의 최초 크기는 2이다. 상어의 현재 크기보다..

백준 5676 음주코딩/세그먼트트리
OnlineJudge2020. 12. 15. 14:05백준 5676 음주코딩/세그먼트트리

문제로 이동 5676번: 음주 코딩 각 테스트 케이스마다 곱셈 명령의 결과를 한 줄에 모두 출력하면 된다. 출력하는 i번째 문자는 i번째 곱셈 명령의 결과이다. 양수인 경우에는 +, 음수인 경우에는 -, 영인 경우에는 0을 출력한다. www.acmicpc.net 목차 너무도 흔한 세그먼트 트리 문제이다. 하지만, 주의해야 할 부분이 몇 가지 있다. 주의해야 할 점 1. 구간곱 문제이므로 수가 커진다. 하지만, 이 문제에서는 음,양,0만 판별하면 되므로 모든 수를 -1, 0, 1로 바꿔준다. 2. 문제에 TC(테스트 케이스)가 주어지지 않았다. C++에선 while scanf 사용이 가능하지만 Python3에서는 다른 방법을 사용한다. TC가 주어지지 않는 경우 Python3에서는 Try - Except ..

image