PS/Python 46

[백준] 3190 - 뱀(파이썬, Python)

www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 해당 문제는 뱀 머리의 위치를 이동시키며 뱀의 머리가 자신의 몸 또는 벽에 부딪힐 때까지의 시간을 계산하는 것이 목적입니다. 접근법 1 종료 조건에 맞게 게임 중단시키기 게임의 종료 조건은 두 가지가 있습니다. 1. 뱀의 머리가 벽에 부딪혔을 때 종료됩니다. 2. 뱀의 머리가 자신의 몸에 부딪혔을 때 종료됩니다. 저는 위의 조건을 간단히 확인하기 위해 아래와 같은 전략을 세웠습니다. 1. 벽과 뱀의 몸 위치에는 -1을..

PS/Python 2021.05.03

[백준] 16236 - 아기 상어(파이썬, Python)

www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 해당 문제 '엄마 상어의 도움이 없이 먹이(물고기)를 먹을 수 있는 시간'을 계산하는 문제입니다. 문제 핵심 이 문제에서 상어는 가장 가까운 먹이를 먹으러 장소를 이동합니다. 따라서 탐색을 할 때 너비 우선 탐색(BFS)을 이용하는 게 적합한 거 같습니다. 저는 이 문제를 해결할 때 두 가지 실수를 하여 시간이 오래 걸렸습니다. 실수 1 상어의 위치를 0으로 초기화하지 않았다. - 초기 입력에서 상어의 ..

PS/Python 2021.05.01

[백준] 20056 - 마법사 상어와 파이어볼(파이썬, Python)

www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 각 파이어 볼은 (행의 위치, 열을 위치, 질량, 속력, 방향)의 정보를 가지고 있으며 각 이동 회차마다 주어진 방향으로 속력만큼 이동을 합니다. 이 문제는 K번 이동 후 남아있는 파이어볼의 질량의 합을 구하는 문제입니다. 특징 1 IndexError: list index out of range(인덱스 에러)가 발생하지 않도록 파이어볼의 위치를 계산해야 한다. - 격자의 ..

PS/Python 2021.04.29

[백준] 12100 - 2048 (Easy) (파이썬, Python)

www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 이 문제는 2048 게임을 구현하는 문제입니다! 보드의 크기는 4X4이며 최대 5번 움직였을 때 보드판 내의 가장 큰 수를 구하는 게 목적입니다. 저는 해당 문제를 한 번에 통과를 못하였고 반례를 통해 코드를 보완한 후 통과를 했습니다..ㅎㅎ 혹시 코드를 짠 후 통과를 못하시는 분이 계시다면 반례를 통해 코드를 점검하는 것도 좋을 거 같아요😁 제가 참고한 반례 링크는 아래와 같습니다..

PS/Python 2021.04.06

[백준] 13460 - 구슬 탈출 2 (파이썬, Python)

[문제 출처] www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net baekjoon님이 만드신 '삼성 SW 역량 테스트 기출문제' 문제집을 풀기로 하고 만난 첫 번째 문제입니다! 역시 기출 문제여서 그런지 저에게는 상당히 난이도가 높았습니다😭 혹시나 테스트 케이스는 모두 통과하지만 반례를 찾지 못한 분이 계시다면 아래의 링크 속 반례를 시도하시는 걸 권합니다!! (제가 해당 반례를 고려하지 못해서 실패를 했었거든요..

PS/Python 2021.04.03

[백준] 13305 - 주유소 (파이썬, Python)

www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 각 도시 사이의 거리와 도시 별 리터 당 기름 가격이 주어지며 이를 이용해 왼쪽 끝 도시에서 오른쪽 끝 도시까지의 최소 비용을 계산하는 문제입니다! *기름 1리터 당 1km를 이동할 수 있습니다. 이 문제는 기름 값이 싼 도시에서 최대한 많이 주유를 하는 게 핵심이라 생각했습니다. 따라서 아래와 같은 가설을 세웠습니다. 현재 도시의 주유 가격과 이전 까지의 최소 가격을 비교 1. 현재 도시의 주유..

PS/Python 2021.03.31

[백준] 10816 숫자 카드 2 (파이썬, Python)

www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net N개의 숫자 카드 목록이 주어지고 M가의 찾을 카드가 주어지면 각각의 찾을 카드 별로 숫자 카드 목록에서 몇 개가 있는지 출력하는 문제입니다! 이 문제를 처음 봤을 때 정렬을 해서 풀어야하나 고민이 들었는데요 숫자 카드의 개수(카드 목록의 길이)의 최대 값이 500000이라 단순히 정렬을 탐색하면 시간 초과가 날 거 같았습니다! 그래서 단순히 동일한 카드의 개수를 찾는 문제이니..

PS/Python 2021.03.31

[백준] 15650 - N과 M (2) (파이썬, Python)

[문제 출처] www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이 문제는 조합을 이용하면 해결이 되는 문제입니다! 조합을 직접 구현해 본 적이 없어 이 문제를 만남 김에 구현을 해보았습니다~! 전체 코드 import sys def combination(data, n): res = [] if n == 1: return [ [e] for e in data ] for idx in range(len(data)-1): rest = data[idx+1:] restCo..

PS/Python 2021.03.30

[백준] 15649 - N과 M (1) (파이썬, Python)

[문제 출처] www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 기본적인 순열을 구현하는 문제이다. 여러 문제를 풀어 오면서 순열을 이용하는 문제를 여러 번 만났지만 직접 순열을 구현한 적은 없었다. (python은 itertools 라이브러리를 이용하면 편리하게 순열을 계산할 수 있다.) 이 문제를 만나 처음으로 순열을 구현해봤는데 쉽지 않았다. 다른 자료를 참고해서 공부한 후 구현한 코드는 아래와 같다. 전체 코드 import sys def permuta..

PS/Python 2021.03.27

2020 카카오 인턴십_수식 최대화(파이썬, Python)

[문제 출처] https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 이 문제를 두 단계로 나눠서 생각했다. 1. 순열을 이용해서 연산자 우선순위 경우의 수 구하기 2. 우선순위에 맞게 연산 수행하기 1단계 - 순열을 이용해서 연산자 우선순위 경우의 수 구하기 어떤 우선순위에 따라 계산을 해야 상금이 최대가 되는지 모른다. 따라서 모든 경우의 수를 구할 필요가 있으며 이를 위해 순열을 이용했다. ❗️연산자의 우선순..

PS/Python 2021.02.14