Algorithm Study/Python
-
[SWEA] 핀볼 게임Algorithm Study/Python 2021. 10. 10. 19:12
https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 모든 비어있는 공간에서 4가지 방향으로 핀볼을 움직이면서 점수를 계산하는 방식으로 문제를 해결했다. N = int(input()) + 2 board = [[5 for _ in range(N)]] + [[5] + list(map(int, input().split())) + [5] for _ in range(N - 2)] + [[5 for _ in range(N)]] 먼저 계산을 쉽게 하기위해 모든 가장자리에 5번 블록을 이용하여 벽을 넣었다. 벽이 없으면 범위 밖으로 나가서 방향이 바뀌는..
-
[SWEA] 원자 소멸 시뮬레이션Algorithm Study/Python 2021. 10. 8. 00:54
https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 위 그림처럼 원자들이 이동하면서 충돌 소멸하는 시뮬레이션을 구현하는데 좌표값이 -1000 ~ 1000이고 원자들이 충돌하는 시간이 1초일 때, 0.5초일 때가 존재해 해당 부분을 고려해야하는 문제다. 풀이 메모리 초과로 인한 런타임 오류에 대한 문제를 찾지 못해서 많이 고생했다. data = popleft() 로 받아서 data[0], data[1]... 으로 접근하여 수정 => append(data) data1, data2, data3 = popleft()로 받아서 접근 후 수정 => ap..
-
[SWEA] 보물상자 비밀번호Algorithm Study/Python 2021. 10. 5. 23:28
https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 위 그림처럼 4가지로 나눈 뒤 1칸씩 회전시키며 나올 수 있는 문자열을 구하면 된다. 다음과 같은 기능이 필요하다. 1. 문자열 회전 2. 회전된 배열 나눈 후 저장, 중복 체크 3. 정렬 4. 16진수 -> 10진수 풀이 password = deque(password) password.appendleft(password.pop()) password = list(password) 문자열 회전은 deque를 이용하여 구현하였다. 마지막 값을 pop한 뒤 맨 앞에 append하면 된다. 이동한 ..
-
[백준] 18808 스티커 붙이기Algorithm Study/Python 2021. 9. 28. 23:49
https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 풀이 스티커가 들어갈 수 있는지 체크하고 들어가지 못하면 90도 회전시킨 후 다시 확인하는 단순한 구현이지만 세세한 부분을 체크해야하는 문제였다. ROW, COL, K = map(int, input().split()) board = [[0 for _ in range(COL)] for _ in range(ROW)] stickers = [] for i in range(K): r, c = map(int,..
-
[백준] 16236번 아기 상어Algorithm Study/Python 2021. 9. 24. 02:54
https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다. 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마 상어에게 도움을 요청한다. 먹을 수 있는 물고기가 1마리라면, 그 물고기를 먹으러 간다. 먹을 수 있는 물고기가 1마리보다 많다면, 거리가 가장 가까운 물고기를 먹으러 간다. 거리는 아기 상어가 있는 칸에서 물고기가 있는 칸으로 이동할 때, 지나야하는 칸의 개수의 최솟..
-
[백준] 18428번 감시 피하기Algorithm Study/Python 2021. 9. 23. 23:56
https://www.acmicpc.net/problem/18428 18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net 문제 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복도로 빠져나온 학생들은 선생님의 감시에 들키지 않는 것이 목표이다. 각 선생님들은 자신의 위치에서 상, 하, 좌, 우 4가지 방향으로 감시를 진행한다. 단, 복도에 장애물이 위치한 경우, ..
-
[백준] 14889 스타트링크Algorithm Study/Python 2021. 9. 22. 19:08
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제 오늘은 스타트링크에 다니는 사람들이 모여서 축구를 해보려고 한다. 축구는 평일 오후에 하고 의무 참석도 아니다. 축구를 하기 위해 모인 사람은 총 N명이고 신기하게도 N은 짝수이다. 이제 N/2명으로 이루어진 스타트 팀과 링크 팀으로 사람들을 나눠야 한다. BOJ를 운영하는 회사 답게 사람에게 번호를 1부터 N까지로 배정했고, 아래와 같은 능력치를 조사했다. 능력치 Sij는 i번 사람과 j번 사람이 같은 팀에 속..
-
[백준] 9019번 DSLRAlgorithm Study/Python 2021. 9. 15. 22:17
https://www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 문제 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 저장된 n을 다음과 같이 변환한다. n의 네 자릿수를 d1, d2, d3, d4라고 하자(즉 n = ((d1 × 10 + d2) × 10 + d3) × 10 + d4라고 하..