본문 바로가기
728x90

Python49

백준 테트로미노 [14500] Python 코드 + 해설 백준 테트로미노 14500 파이썬(python) 코드 및 해설입니다.( DFS와 브루트 포스 ) **DFS(깊이 우선 탐색)**를 사용하여 모든 가능한 모양을 탐색한다.'ㅗ' 모양은 DFS로 탐색할 수 없으므로 별도로 처리한다.경계 조건을 명확히 확인하여 인덱스 오류를 방지한다.최적화를 위해 가지치기를 사용한다.구현 단계입력 받기종이의 크기 N, M과 종이에 쓰인 수들을 입력받는다.종이의 정보를 2차원 리스트 board에 저장한다.DFS 함수 구현현재 위치에서 깊이 4까지 탐색하여 가능한 모든 모양의 합을 계산한다.이미 방문한 위치를 재방문하지 않도록 visited 배열을 사용한다.백트래킹을 통해 방문 상태를 원래대로 복구한다.가지치기를 위해 남은 칸에서 얻을 수 있는 최대 값을 미리 계산하여 합산해도 .. 2024. 10. 22.
백준 주사위 굴리기 [14499] Python 코드 + 해설 백준 주사위 굴리기 14499 파이썬(Python) 정답 코드 및 해설입니다.이 문제에서는 N x M 크기의 지도 위에 주사위가 놓여 있고, 주어진 명령에 따라 주사위를 굴리면서 특정 규칙에 따라 지도의 숫자와 주사위의 숫자를 변경한다.주사위의 초기 상태와 전개도주사위의 초기 전개도는 다음과 같다: 24 1 3 5 6윗면: 1아랫면: 6앞면: 5뒷면: 2왼쪽 면: 4오른쪽 면: 3주사위의 모든 면에는 처음에 0이 적혀 있다.이동 규칙주사위를 이동시킨다.이동 방향은 동쪽(1), 서쪽(2), 북쪽(3), 남쪽(4)이다.주사위를 이동시킬 때 지도의 바깥으로 이동하려고 하면 그 명령은 무시한다.이동한 칸에 쓰여 있는 수에 따라 다음을 수행한다:칸의 수가 0이면: 주사위의 바닥면에 쓰여 있는 수를 칸에 복사.. 2024. 10. 22.
백준 시험 감독 [13458] Python 코드 + 해설 이 문제에서는 여러 시험장이 있고, 각 시험장마다 응시자의 수가 주어진다. 각 시험장에는 반드시 총감독관이 1명 있어야 하며, 총감독관은 최대 B명의 응시자를 감독할 수 있다. 추가로 필요한 경우 부감독관을 여러 명 배치할 수 있으며, 부감독관 한 명은 최대 C명의 응시자를 감독할 수 있다.모든 응시생을 감독하기 위해 필요한 최소한의 감독관 수를 계산하는 것이다.해결 방법: 수학적 계산을 통한 최적화이 문제는 각 시험장마다 필요한 감독관의 수를 계산하여 합산하면 된다. 중요한 점은 각 시험장마다 반드시 총감독관이 1명 있어야 한다는 것이다.구현 단계입력 받기시험장의 수 N과 각 시험장마다의 응시자 수 A_i를 입력받는다.총감독관이 감독할 수 있는 응시자 수 B와 부감독관이 감독할 수 있는 응시자 수 C를.. 2024. 10. 22.
백준 뱀 [3190] Python 코드 + 해설 문제 설명이 게임은 뱀이 사과를 먹으면서 길어지고, 벽이나 자기 몸에 부딪히면 게임이 끝나는 간단한 규칙을 가지고 있다.게임은 N x N 크기의 정사각형 보드에서 진행된다. 뱀은 처음에 보드의 맨 위 맨 좌측에 위치하며, 오른쪽을 향하고 있다. 몇몇 칸에는 사과가 놓여있다.뱀은 매 초마다 이동하며, 이동 규칙은 다음과 같다:뱀은 머리를 다음 칸으로 이동시킨다.이동한 칸에 사과가 있으면 사과를 먹고 꼬리는 그대로 있다 (몸길이가 늘어난다).이동한 칸에 사과가 없으면 꼬리를 줄여서 몸길이는 그대로이다.만약 벽이나 자기 자신과 부딪히면 게임이 끝난다.게임이 몇 초 만에 끝나는지 계산하는 것이 이 문제의 목표이다.해결 방법: 시뮬레이션을 사용한 구현이 문제는 시뮬레이션을 통해 해결할 수 있다. 매 초마다 뱀의 .. 2024. 10. 22.
백준 2048 (Easy) [12100] Python 코드 + 해설 문제 이해하기2048 게임은 4×4 크기의 보드에서 숫자 블록을 이동시키며 즐기는 게임이다. 하지만 이번 문제에서는 보드의 크기가 N×N (1 ≤ N ≤ 20)으로 주어지고, 최대 5번의 이동으로 만들 수 있는 가장 큰 블록의 값을 찾아야 한다.게임 규칙 정리상하좌우 네 방향으로 보드의 모든 블록을 한꺼번에 이동시킬 수 있다.같은 숫자를 가진 두 블록이 충돌하면 하나로 합쳐진다.한 번의 이동에서 이미 합쳐진 블록은 다시 합쳐질 수 없다.최대 5번 이동하여 가장 큰 블록의 값을 구해야 한다.해결 방법: DFS로 모든 경우의 수 탐색하기이 문제는 모든 가능한 이동 조합을 시도해보는 방법으로 해결할 수 있다. 최대 이동 횟수가 5번이므로, 가능한 이동의 수는 4^5 = 1024가지이다. 따라서 DFS(깊이 우.. 2024. 10. 22.
백준 구슬 탈출 2 [13460] Python 코드 + 해설 문제 설명구슬 탈출은 빨간 구슬을 구멍에 넣는 것이 목표인 게임이다. 직사각형 보드에 빨간 구슬과 파란 구슬이 각각 하나씩 놓여 있으며, 보드를 기울여 구슬들을 움직일 수 있다. 중요한 점은 파란 구슬은 구멍에 들어가면 안 되고, 빨간 구슬만 구멍에 빠져야 한다. 보드를 왼쪽, 오른쪽, 위, 아래로 기울일 수 있으며, 한 번 기울일 때마다 구슬들은 그 방향으로 모두 이동할 수 있을 만큼 이동한다. 두 구슬은 동시에 움직이며, 이동 중에 서로 겹칠 수 없다. 목표는 최소 횟수로 빨간 구슬을 구멍에 넣는 것이다. 단, 이동 횟수는 10번을 초과할 수 없다. 그렇다면 어떻게 이 문제를 해결할 수 있을까?해결 방법: BFS를 활용한 상태 탐색이 문제는 구슬들의 모든 가능한 상태를 탐색하여 최소 횟수로 빨간 구슬.. 2024. 10. 21.
[업비트] 실시간 MACD API Python Code upbit upbit macd upbit python code 업비트 오토트레이딩 macd macd 계산식 업비트 개발자 센터에서는 실시간으로 MACD 값을 제공하는 API가 없습니다. 업비트에서 제공하는 시세 종목 조회 API를 이용해서 실시간 MACD 를 출력하는 프로그램을 짜보고자 합니다. MACD란? MACD는 Moving Average Convergence Divergence의 줄임말로 이동평균선의 수렴과 발산을 분석하는 보조지표입니다. 이동평균선이란 주가평균을 이은 선으로서 단기 이평선이 장기 이평선에서 멀어지면 발산, 단기 이평선이 장기 이평선에서 가까워지면 수렴을 한다고 합니다. 또한 주식의 경우 파동의 성질을 가지고 있어 발산과 수렴이 반복해서 일어나는 것을 확인할 수 있습니다. 이 반복.. 2021. 9. 9.
[업비트] 실시간 OBV API Upbit Python Code upbit upbit macd upbit python code 업비트 오토트레이딩 obv obv 계산식 업비트 개발자 센터에서는 실시간으로 obv 값을 제공하는 API가 없습니다. 이번 글에서도 저번글과 마찬가지로 업비트에서 제공하는 시세 종목 조회 API를 이용해서 실시간 OBV를 출력하는 프로그램을 짜보려고 합니다. 지난글 보러가기 "실시간 RSI API Ubit Python Code" OBV란? On Balance Volume 으로 거래량 지표입니다. 조셉 그랜빌에 의해 탄생한 수식으로 매수세가 많으면 주가가 상승하고, 매도세가 많으면 하락한다는 원리와 더불어서 거래량은 주가에 대해 선행한다라는 원리로 만든 것입니다.즉 상승한 날의 거래량 합계 - 하락한 날의 거래량 합계로 이를 누적 집계한 뒤 도.. 2021. 9. 9.
[업비트] 실시간 RSI API Python Code upbit upbit macd upbit python code 업비트 오토트레이딩 macd macd 계산식 업비트 개발자 센터에서는 실시간으로 RSI 값을 제공하는 API가 없습니다. 대신 업비트에서 제공하는 시세 종목 조회 API를 이용해서 실시간 RSI 를 출력하는 프로그램을 짜보려고 합니다. 코인 종목 중 하나인 XRP로 테스트 해보겠습니다. 최근 캔들 200개의 정보를 가져오는 api를 이용한 코드는 다음과 같습니다. url = "https://api.upbit.com/v1/candles/minutes/1" querystring = {"market":"KRW-XRP","count":"200"} response = requests.request("GET", url, params=querystring.. 2021. 5. 2.
728x90