본문 바로가기
300x250

프로그래밍/Python10

[python] n차원 배열 만들기 python은 n차원 배열을 선언하는 것에 있어서 까다로운 편에 속한다. c언어의 경우는 a[][]의 형태로 2차원 배열을 선언 할 수 있지만 python은 이 방식이 불가능하다. 4차원 배열을 예로 들자면 [ [ [ [ ] * ] * ] * ] * 방식을 사용할 경우 특정 범위 값을 바꾸려해도 배열 내의 모든 값이 변하게 된다. 이를 해결 하기 위해서는 배열을 선언할 때 [ [ [ [ for _ in range() ] for _ in range() ] for _ in range() ] for _ in range() ]의 형태로 코드를 작성해야 4차원 배열이 작성이 된다. 2023. 4. 9.
[Python][BOJ 6951] Packet Routing https://www.acmicpc.net/problem/6951 6951번: Packet Routing The date is October 29th, 1969. Today, scientists at UCLA made history by exchanging data between two computers over a network. The transmission wasn't very spectacular: only the first two letters of the word login were received before the system crashed. www.acmicpc.net 엄청 쉬운 Floyd-warshall 문제이다. n개의 정점에 w개의 간선정보을 받고 계산 후 p개의 질문에 대답하면 되.. 2023. 3. 13.
[Python][BOJ 2862] 수학 게임 https://www.acmicpc.net/problem/2862 2862번: 수학 게임 동전의 개수가 4개일 때, 상덕이가 첫 번째 턴에서 가져갈 수 있는 동전의 경우의 수는 1, 2, 3, 4개이다. 만약 4개를 가져가게 된다면 상덕이는 항상 이기게 된다. 하지만, 이것은 최솟값이 아니다. www.acmicpc.net 저번에 풀었던 fibonacci game과 같은 유형의 문제이다. 증명을 하면 이도 똑같이 돌의 수보다 작은 피보나치 수 중에서 가장 큰 수만큼 돌을 가져가야 이기는 문제다. https://ujoon.tistory.com/4 [python][BOJ2373] Fibonacci Game https://www.acmicpc.net/problem/2373 2373번: Fibonacci Game.. 2023. 3. 11.
[Python][BOJ 14938] 서강그라운드 https://www.acmicpc.net/problem/14938 14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net 플로이드 워셜, 데이크스트라, 브루트포스의 응용문제다. 나는 플로이드 워셜을 사용했는데, 각 정점에서 다른 정점으로 가는 길이를 모두 구해놓고 탐색 범위 m보다 길이가 작은 수들의 아이템 개수를 저장하고, 각 정점에서 모을 수 있는 아이템 개수들 중에서 최대값을 출력하면 되는 문제다. 코드는 아래에 있다. 더보기 n,m,r=map(int,input().split()) t=[0]+list(map(int,.. 2023. 3. 11.
[python][BOJ15973] 두 박스 https://www.acmicpc.net/problem/15973 15973번: 두 박스 표준 입력으로 두 박스의 정보가 한 줄에 하나씩 주어진다. 각 박스의 정보는 왼쪽 아래 꼭짓점 좌표 (x1, y1)과 오른쪽 위 꼭짓점 좌표 (x2, y2)로 구성되는데 이들 좌푯값 x1, y1, x2, y2 (x1 < x2, y1 < y2) www.acmicpc.net 2018년 정올 중등부 1번 문제지만, 단순 구현문제다. 물론 구현할 때 조건문이 조금 길어 귀찮다. NULL인 경우, POINT인 경우, LINE인 경우를 판단하고 나머지는 FACE로 처리해주면 풀린다. 코드는 아래에 있다. 더보기 a=list(map(int,input().split())) b=list(map(int,input().split()).. 2023. 2. 18.
[python][BOJ1225] 이상한 곱셈 https://www.acmicpc.net/problem/1225 1225번: 이상한 곱셈 첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는 음이 아닌 정수이다. 수가 0인 경우에는 0만 주어지며, 그 외의 경우 수는 0으로 시작하지 않는다. www.acmicpc.net 조금만 머리를 굴리면 풀 수 있다. 인수정리를 통해서 121*34를 표현하면 1*(3+4) + 2*(3+4) + 1*(3+4) = (1+2+1)*(3+4)로 표현할 수 있다. 시간제한이 2초라서 뇌빼고 2중 for문을 돌려도 O(n^2)의 시간복잡도를 가져 시간 초과가 날 것이므로 O(2n)의 시간복잡도를 가지는 위의 계산만이 통과할 것이다. 코드는 아래에 있다. 더보기 a,b=input().split(.. 2023. 2. 13.
300x250