백준 16954 움직이는 미로 탈출 python
문제로이동 16954번: 움직이는 미로 탈출 욱제는 학교 숙제로 크기가 8×8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은 빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽 www.acmicpc.net 목차 시작하기 전에 2개월 전에 스터디에서 공통 문제로 풀었다가 실패했던 문제였습니다. 이번엔 노트에 로직을 정리하고 1WA를 맞은 뒤 이거다! 싶어서 수정했는데 정답이었고 2회에 걸쳐 로직을 수정/추가했습니다. 접근 방법 벽이 움직인다는 점에서 캐슬디펜스 문제와 비슷하다고 생각했습니다. 비슷한 방식으로 접근했다가 큰 코 다쳤는데 그 이유는 캐슬 디펜스에선 주인공 위치가 고정되어 있지만, 이번 문제는 사방탐색(상하좌우) 뿐만 아니라 대각선 이..
byOnlineJudge··
백준 2263 트리 풀이 pypy3, python3, java
문제로이동 목차 문제 설명 재귀함수를 이용해 풀었습니다. 각 order의 특징을 살펴보면 inOrder : LVR (왼쪽-뿌리-오른쪽) postOrder : LRV (왼쪽-오른쪽-뿌리) preOrder : VLR (뿌리-왼쪽-오른쪽) 이러한 특징을 가졌는데, inOrder와 postOrder를 잘 보시면 구조가 다르기 때문에 이를 이용하여 풀어야 합니다. 1. postOrder는 뿌리의 위치가 항상 맨뒤에 존재합니다. 그래서 매 번 가장 마지막 노드를 가장 먼저 출력합니다. 2. 해당 뿌리 위치 왼쪽까지를 재귀합니다. 3. 해당 뿌리 위치 오른쪽부터 재귀합니다. 4. 1~3을 반복합니다. 문제 후기 pypy3와 python3의 차이점을 몸소 경험했던 문제였습니다. 신선한 충격이었고 덕분에 멘탈이 탈탈 털..
byOnlineJudge··
백준 1002 터렛 풀이 python, java
문제로이동 목차 문제 설명 알고리즘 문제라기 보다는 수학에 많이 가깝습니다. 두 원을 그려서 교점(겹치는 점)을 찾아내는 문제이며, 정답률이 많이 낮은 것으로 봐서는 여러 경우의 수를 고려하지 못했던 것 같습니다. 물론 저도 정답률 낮추는 데 한 몫 했습니다 ^^ 소스코드도 위와 같은 순서로 분리되어 있습니다. 1. 원이 완전히 겹치는 경우 (출력값 0) 두 원의 거리가 0이면서 반지름도 같은 경우를 말합니다. 2. 원이 한쪽 면만 닿는 경우 (출력값 1) (내접) 두 원의 거리 == 원1 반지름 + 원2 반지름 단, 원1 반지름과 원2 반지름의 길이를 비교해서 작은 값, 큰 값으로 분류해도 되지만 편의상 절대값 abs를 이용했습니다. (외접) 두 원의 거리 - r1 = r2 아래 그림을 참고 바랍니다...
byOnlineJudge··
백준 2589 보물섬 풀이 python, java
문제로이동 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 목차 문제 설명 보통 보물의 위치가 정해져 있고 특정 위치에서 해당 보물들을 찾는 문제라면, 이 문제는 그 보물을 직접 찾고 최단거리를 출력해야 합니다. 이 문제를 읽고 나면 아래와 같은 의문점이 생깁니다. 보물을 찾는 방법? 최단 거리는 어떻게 구할 것인가? 같은 좌표인데 거리가 다른경우? 좌표가 같다면 거리가 짧은 것으로 갱신 아예 bfs를 써서 돌리면 최단 거리에서 return되기 때문에 걱정없음 이처럼 여러 가지 의문점이 생겼었는데 정리하자면 이렇..
byOnlineJudge··
백준 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 접근값만 바꿔주면 되기 때문에 크게 상관없습니다..
byOnlineJudge··
백준 10808 알파벳개수 풀이 python, java
문제로이동 목차 아직 Java가 많이 서툴고, 변수나 리스트 배열 등 기초적인 스킬이 부족해 난이도 가리지 않고 풀고 있습니다. 언제든 피드백 환영입니다. 더 나은 스킬이 있다면 배우겠습니다. 소스 코드 Python - input으로 문자열을 입력받습니다. - 알파벳 a ~ z까지 총 26개이므로 lst배열에 [0]을 총 26개로 초기화 했습니다. - ord(문자)는 문자를 숫자로 바꿔주는 함수이므로 알파벳 a의 아스키코드인 97을 빼주어 lst 배열의 index와 맞춰주었습니다. s = input() lst = [0]*26 for i in s: lst[ord(i)-97]+=1 for i in lst: print(i,end= ' ') Java8 - python에서는 3번째 코드라인 String에 Char..
byOnlineJudge··
불러오는 중...