본문 바로가기
728x90

python14

[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.
[오류] ValueError 생각보다 나오기 쉬운 오류다. 자료형이 맞지 않으면 나오는 오류인데, 문자열, 'abc'를 int로 바꾸는 등 자료형에 맞지 않게 사용하면 나온다. python의 경우 자료형 확인은 type 함수를 사용하면 알 수 있다. 2023. 2. 16.
[오류] RecursionError 파이썬으로 dfs같은 재귀 문제를 풀다 보면 백준에서 가끔 RecursionError가 나오는 경우가 있다. 분명 예제는 잘 돌아가는데 어디서 오류가 나온건지 멘붕이 온다. 이를 고치기 위해서 dfs의 경우에는 재귀를 사용하지 않고 stack을 사용해서 문제를 풀어도 되지만, 굳이 잘돌아가는 코드를 갈아엎기엔 아깝기에 재귀함수를 사용하면서 RecursionError를 피해가는 법에대해 말해보고자 한다. Python의 재귀 깊이는 1,000번이 최대이다. 하지만 이는 sys모듈에서 지원하는 setrecursionlimit() 함수로 재귀 깊이 제한을 변경할 수 있다. 2023. 2. 15.
[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.
[python][BOJ2373] Fibonacci Game https://www.acmicpc.net/problem/2373 2373번: Fibonacci Game 당신은 N(2 ≤ N ≤ 1,000,000)개의 구슬을 가지고 다음과 같은 게임을 하려고 한다. 게임은 두 사람이 번갈아 가면서 진행하며, 1번 사람이 몇 개의 구슬을 가져가는 것으로 게임이 시작된다. 1번 사 www.acmicpc.net 생각이 어렵지 구현은 브론즈 수준이다. 직접 N값과 가져가는 값을 보면 가져갈 수 있는 값들은 늘 피보나치 수와 연관되어 있는 것을 알 수 있다. 이를 코드로 구현할 때 생각해야할 조건은 총 2개가 있다. N이 피보나치 수열의 수일 경우 - 이 경우에는 무슨 짓을 해도 2번 사람을 이길 수가 없다. 계산할 필요 없이 -1을 출력해주면 된다. N보다 작은 피보나치 수.. 2023. 2. 12.
[python][BOJ2422] 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 https://www.acmicpc.net/problem/2422 2422번: 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 첫째 줄에 정수 N과 M이 주어진다. N은 아이스크림 종류의 수이고, M은 섞어먹으면 안 되는 조합의 개수이다. 아래 M개의 줄에는 섞어먹으면 안 되는 조합의 번호가 주어진다. 같은 조합은 두 번 www.acmicpc.net N개의 아이스크림 종류로 만들 수 있는 모든 경우의 수 중에서 M개의 같이 먹으면 안 되는 조합이 포함되어 있는 경우의 수만 제외하면 되는 간단한 문제다. 코드는 아래에 있다. 더보기 n,m=map(int,input().split()) icecream=[i for i in range(n+1)] det=[[False for j in range(n+1)] for .. 2023. 2. 11.
728x90