반응형

백준 시뮬레이션 8

백준 23291 어항정리 (파이썬)

22.05.05 추가) PC에서 검색하고 들어오면 화면이 모바일 버전으로 나옵니다. 다른 페이지는 문제가 없는데 어항정리만 뒤에 url에 "/m/" 이 추가되는 것을 확인했습니다. https://osnim.tistory.com/entry/%EB%B0%B1%EC%A4%80-23291-%EC%96%B4%ED%95%AD%EC%A0%95%EB%A6%AC-%ED%8C%8C%EC%9D%B4%EC%8D%AC 위 사이트로 이동해서 글을 보시면 모바일 화면이 아닌 PC 화면으로 글을 보실수 있을 것입니다 빨리 문제를 해결하겠습니다. 문제 : https://www.acmicpc.net/problem/23291 23291번: 어항 정리 마법사 상어는 그동안 배운 마법을 이용해 어항을 정리하려고 한다. 어항은 정육면체 모양이..

백준 23290 마법사 상어와 복제 (파이썬)

구현, 시뮬레이션 문제 : https://www.acmicpc.net/problem/23290 23290번: 마법사 상어와 복제 첫째 줄에 물고기의 수 M, 상어가 마법을 연습한 횟수 S가 주어진다. 둘째 줄부터 M개의 줄에는 물고기의 정보 fx, fy, d가 주어진다. (fx, fy)는 물고기의 위치를 의미하고, d는 방향을 의미한다. 방향 www.acmicpc.net 문제 요약 및 정리 ''' 4x4, 물고기 M 마리, 이동방향 1부터 8까지 ←, ↖, ↑, ↗, →, ↘, ↓, ↙ 상어와 물고기 같은 칸 가능, 둘 이상의 물고기 같은 칸 가능 마법 한번 다음과 같은 작업 순서 1. 복제 마법 시전 (5번에서 물고기 복제) 2. 모든 물고기 한 칸 이동 상어가 있는 칸 X, 물고기 냄새가 있는 칸 X..

백준 23288 주사위 굴리기 2 (파이썬)

문제 : https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net 문제 요약 ''' 1. NxM, 오른쪽 동쪽, 위쪽 북쪽, 주사위 각 면 1~6, 전개도 2. 전개도 2 4 1 3 5 6 3. 지도 윗 면 1, 동쪽을 바라보는 방향이 3 인 상태, 지도와 맞닿은 부분 6 4. 가장 처음 주사위 이동 방향 : 동쪽 주사위 이동 방식 1. 이동방향으로 한칸 구름, 칸이 없다면 반대방향으로 한 칸 구름 2. 도착한 칸 점수 획득 3. 주사..

백준 21610 마법사 상어와 비바라기 (파이썬)

문제 : https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 조건을 간단하게 정리하면 다음과 같습니다. ''' 1. 각 칸에 바구니, 바구니에 저장할 물의 양 제한 X 2. 1번행과 N 번 열이 연결되어 있음, 즉 맵 벗어나도 상관 x 3. 비바라기 > 맨 아래 1열 2열 맨 아래 위 행 1열 2열 비구름 생성 4. 비 구름을 M 번 이동, 방향 8개, 방향 d, 거리 s, 5. 방향 ←, ↖, ↑, ↗, →, ↘, ↓, ↙ 1. 모든 구름..

백준 20055 컨베이어 벨트 위의 로봇 (파이썬)

문제 출처: https://www.acmicpc.net/problem/20055 첫번째 풀이 최적화 이전 방법 (Python3는 시간초과, pypy3 는 통과) 1. 한 칸 회전 deque의 rotate를 이용하여 구현, robot을 벨트 위 index로 저장 popleft를 사용하여 처음 넣은 로봇이 처음 이동하게 만듦 robot에 저장된 인덱스를 1씩 증가 시켜 벨트 N번 칸이 아닐 경우만 로봇을 저장 2. 모든 로봇 한 칸씩 이동 popleft로 먼저 올라간 로봇 먼저 로봇의 위치를 저장한 robots 배열에서 현재 로봇이 다음 칸에 로봇이 있는지 확인 not in 으로 확인 처음 로봇이 N번째 위치에 있다면 robots 배열에 다시 삽입 X 3. 로봇 추가 4. count로 내구도 0인 벨트 개수..

백준 17140 이차원 배열과 연산 (Python)

문제 출처: https://www.acmicpc.net/problem/17140 나의 접근법 먼저 행과 열의 최대길이를 구분하여 계산합니다. R 연산 checkList 배열에 [숫자, 개수]를 함께 묶어 저장하여 not in으로 중복을 해결했습니다. 정렬은 sort함수의 lambda를 사용했습니다. 행이나 열의 최대 길이는 maxLen을 통해 값을 저장하여 maxLen 보다 작은 행 또는 열의 길이를 가진 경우 차이만큼 0을 추가해줍니다. C 연산 반복문으로 열을 바로 계산하면 R x C 만큼 더 늘어나야 하므로 for i in range(clen): checkList = [] col = list(zip(*arr))[i] 열 마다 zip 함수를 이용하여 편하게 행으로 바꿔 작업하였습니다. 행 연산 보다 ..

백준 14499 주사위 굴리기 (Python)

문제 출처: https://www.acmicpc.net/problem/14499 나의 접근법 먼저 이해가 안되어서 문제를 그림으로 펼쳐서 주사위를 하나 하나 이동시키고 윗면(x표시)을 확인했습니다. 처음에 전개도가 나와서 시작부터 전개도 모양인줄 알고 따라했는데 도처히 예제처럼 답이 안나와서 헤맸는데 제가 문제를 제대로 읽지 않았습니다. 처음 시작은 주사위의 모든 면이 0 입니다! 그 후 각 이동 명령에서 주사위의 이동을 다음과 같이 표현하며 규칙이나 성질을 찾아봤습니다. 위와 같이 동쪽으로 이동할 경우 윗면이 동쪽으로 이동하므로 배열에서 4번으로 이동하게 됩니다. 동, 서, 남, 북 모두 규칙을 찾아 구현을 하니 쉽게 정답을 맞을 수 있었습니다. 제출 코드 def check(x, y): if 0

백준 14500 테트로미노 - (Python)

문제 출처: https://www.acmicpc.net/problem/14500 나의 접근법 저는 처음에 풀 방법이 딱 한가지 밖에 생각이 안났습니다. 바로 테트로미노의 모든 회전과 대칭 좌표를 직접 찾아 반복문을 돌려가며 일일이 확인하는 것이었습니다. 그런데 제가 이번에도 문제를 제대로 확인하지 않아 회전만 구하고 대칭은 놓치고 구현했습니다. 그런데 제가 생각한 테트리스에는 대칭이 없어서 문제를 제대로 숙지 안하고 예측하여 푼 것이 화근이었습니다. 어쨌든 대칭까지 구현했는데 역시나 처음에는 틀렸습니다. 다행히 좋은 반례들을 모아놓은 분이 계셔서 그 반례 덕분에 코드 오류를 잡을 수 있었습니다. 그 반례는 맨 아래 첨부하겠습니다. 첫번째 코드 def check(tetro): x1, y1, x2, y2, ..

1
반응형