OnlineJudge

    백준 15954 인형들(카카오 2018 예선 문제)

    문제로이동 15954번: 인형들 첫 번째부터 세 번째까지의 인형을 선택하면 표준편차는 2/3의 양의 제곱근이 되고, 이 때 표준편차가 최소가 된다. 두 번째부터 네 번째까지의 인형을 선택하는 경우와, 세 번째부터 다섯 번째 www.acmicpc.net 목차 시간 초과 2년 전의 나.. 소스코드를 봤더니 문제 이해도 제대로 못하고 무작정 제출만 했던 것 같습니다. ㅠㅠ 틀렸습니다 2년 전의 저를 믿고 pypy3로 제출했더니 역시나 오답 ㅎㅎ 소스를 아예 갈아엎고 다시 시작합니다. 문제 이해를 하고 다시 접근해 풀었습니다. 문제 설명 단순 브루트포싱 문제입니다. 페이지에 문제 설명이 꽤 길지만 요약하자면 - 총 N개의 인형, K개 이상의 인형을 선택해야 한다. (즉, K의 크기가 N까지 커질 수 있다는 뜻)..

    백준 3190 뱀 풀이 python,java

    문제로이동 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 목차 런타임 에러(IndexError) 반례를 찾기 전까진 "맞왜틀"을 호소했습니다. IndexError가 일어나는 이유를 몰랐거든요.. 하지만 검증 과정에서 문제가 있었습니다. 아래의 소스코드를 보면 필드를 벗어나는 경우를 검증하지 않습니다. BFS/DFS때 흔히 하는 0=n or 0>ny or ny>=n or field[ny][nx]>1:#엔딩 조건 return move+1 if field[ny][nx]==1:#사과를 만난 경우 field[ny][nx]=..

    백준 9328 열쇠 BFS

    문제로이동 9328번: 열쇠 상근이는 1층 빌딩에 침입해 매우 중요한 문서를 훔쳐오려고 한다. 상근이가 가지고 있는 평면도에는 문서의 위치가 모두 나타나 있다. 빌딩의 문은 모두 잠겨있기 때문에, 문을 열려면 열쇠가 www.acmicpc.net 목차 접근 과정 오 열쇠? 비트마스킹이네 달이 차오른다 가자 문제랑 비슷해 보이는데 # 말도 안되는 생각을 해보았다.. visited = [[[0]*(1

    백준 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

    문제로이동 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

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

    Codeforces Round #691 (Div. 2) B. Move and Turn 풀이

    문제 문제로 이동 Problem - B - Codeforces codeforces.com 목차 문제 설명 전형적인 규칙 찾는 문제이다. 개인적으로 A보다 쉬웠다. 2차원 좌표평면 가운데에서 로봇은 동, 서, 남, 북으로 1미터씩 움직일 수 있다. 단, 한쪽 방향만으로 갈 수는 없고 북쪽으로 한 칸 이동 했다면 그 다음엔 서, 동으로 이동 남쪽으로 한 칸 이동 했다면 그 다음엔 서, 동으로 이동 서쪽으로 한 칸 이동 했다면 그 다음엔 북, 남으로 이동 동쪽으로 한 칸 이동 했다면 그 다음엔 북, 남으로 이동해야 한다. 이 때 N 값 만큼 이동할 수 있는데, 로봇이 갈 수 있는 공간의 개수를 출력하라는 문제다. 자세한건 예시를 보자. 예시 그림으로 설명하자면 동, 서, 남, 북으로 이동하기 때문에 결과적으로..

    Codeforces Round #691 (Div. 2) A. Red-Blue Shuffle 풀이

    문제 문제로 이동 Problem - A - Codeforces codeforces.com 목차 문제 설명 두 수가 주어진다. 각 숫자의 위치를 바꾸는 여러가지 경우의 수 중 첫번째 수가 두번째 수보다 더 큰 확률이 높다면 RED를, 두번째 수가 첫번째 수보다 더 큰 확률이 높다면 BLUE를 같다면 EQUAL을 출력하라. 예시 위 입력 값으로 나오는 경우의 수는 아래와 같다. 1,2,3 순으로 나열 : 314>159 RED 1,3,2 순으로 나열 : 341>195 RED 2,1,3 순으로 나열 : 1342,3,1 순으로 나열 : 1433,1,2 순으로 나열 : 4313,2,1 순으로 나열 : 413RED 2, BLUE 4로 BLUE가 출력된다. 규칙 굳이 모든 수를 바꿔가며 비교할 필요가 없다. RED :..

    백준 2042 구간 합 구하기/세그먼트트리

    문제로 이동 목차 문제 설명 구간합 문제다. 이 게시물에서는 세그먼트 트리를 이용해 해결한다. 충분히 단순 반복문으로 해결할 수 있지만 그런 경우, 구간 합을 구하는데 O(n)이 걸린다. 이런 과정이 M번 반복된다면 O(MN)이 된다. 구간합 뿐만 아니라 특정 위치의 수를 변경시키는 기능도 있다. 해당 위치의 수가 바뀌면 그보다 큰 위치의 합도 모두 변경해야 하므로 TLE가 날 수 밖에 없다. 세그먼트 트리를 이용하면 O(Mlog(N))으로 해결할 수 있다. 소스 코드 소스코드 import sys input = sys.stdin.readline tree = list() nodes = list() #ChangeIdx : 수정할 인덱스, ChangeNum : 수정할 숫자 def update(start, en..

    Educational Codeforces Round 100 (Rated for Div. 2) B. Find The Array 풀이

    문제 문제로 이동 Problem - B - Codeforces codeforces.com 문제 설명 입력되는 수열을 A, 새로 생성 해야하는 수열을 B라고 두자. 위와 같은 조건이 주어진다. 위의 조건을 만족하는 B를 출력해야 한다. 이게 어떤 의미인지 예시에서 알아보자. 예시 S : A배열의 총합 조건 : 같은 인덱스 끼리의 차이(절대값)의 합 * 2가 S보다 작거나 같아야 한다. B의 총 합이 A의 총 합(S)보다 작다면 성립이 된다. 하지만 문제설명에서 언급했듯이 주의해야 할 점이 있다. 주의해야할 점 1. B_i와 B_i+1는 서로 나눠지는 관계다. 즉, 한쪽은 약수 반대쪽은 배수가 되어야 한다. 이 조건을 만족하는 수는 바로 2의 제곱수이다. 규칙 A_i 보다 작은 2의 제곱수 B_i를 만들면 ..