📂 최신글 보기
-
[파이썬] 3011 이름 지어주기 (백준)
1. 문제 설명 문제 : 3011 - 이름 지어주기 https://www.acmicpc.net/problem/3011 사용 언어 : 파이썬 (Pypy3) 문제요약 : 구간 [A, B]에 들어있는 수 중에서 수열들의 각 수들 중 가장 차이가 큰 홀수를 구하여라. 2. 문제 풀이 해설 : 우리는 기본적으로 2가지의 경우를 생각해 볼 수 있다. 첫 번째 경우는 기존의 수들 중에 답이 있는 것이다. 이 경우에는 아들들의 이름을 정렬시킨 후, i번째 수와 i+1번째 수의 중간으로 구할 수 있었다. 이는 (P[i]+P[i+1])/2로 구할 수 있다. 두 번째 경우는 A+1 혹은 B-1중 답이 있는 것이다. 이 경우에는 모든 아들들과의 거리 중 가장 짧은 거리를 비교하여 답을 구할 수 있었다. 아들이 최대 100명이..
2024.02.20
-
2023 KOI(한국정보올림피아드) 중등부 1차 1교시 문제 풀이 (1번~12번)
문제 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2023/1/ 2023년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이지에서 확인해 주세요. koi.or.kr 1. 양팔 저울 정답 : 12kg 2kg + 5kg + (물 1kg) = 8kg / 2kg + (물 6kg) = 8kg / 2kg + (물 11kg) = 5kg + 8kg 2. 봉투 정답 : 7 지폐들 중 가장 적은 금액이 3000원 이므로, 모든 봉투에 6000원 미만의 금액이 들어가야 한다. 즉 모든 봉투에 천 원짜리가 5개 이하로 들어가 있어야 한다. 9장이 들어있는 봉투에서 4개를 빼고, 8장이 들어있는 봉투에서 3개를 빼어 2개의 봉투를 추가..
2024.02.17
-
[파이썬] 18185 라면사기 Small (백준)
1. 문제 설명 문제 : 18185 - 라면 사기 (Small) https://www.acmicpc.net/problem/18185 사용 언어 : 파이썬 (Pypy3) 문제요약 : 하나는 3원, 연속된 2개는 5원, 연속된 3개는 7원으로 라면을 구매 할 수 있을 때 라면을 구하는 최소 비용을 구하여라. 2. 문제 풀이 해설 : 케이스로 나누어서 풀 수 있다. 여기서는 대표적으로 2가지의 케이스로 나누어서 설명하겠다. i+1의 값이 i+2보다 클 때의 경우이다. 이 때에는 먼저 연속된 2개를 처리하고, 연속된 3개를 처리한다. i+1의 값이 i+2보다 작을 때의 경우이다. 이 때에는 먼저 연속된 3개를 처리하고, 연속된 2개를 처리한다. 만약 위에 두 경우에서 i번째 값이 가장 커서 남게 된다면, 마지막..
2024.02.14
-
[파이썬] 28218 격자 게임 (백준, KOI 1차)
1. 문제 설명 문제 : 28218 - 격자 게임 https://www.acmicpc.net/problem/28218 사용 언어 : 파이썬 (Pypy3) 문제요약 : NM의 보드에서 말이 아래로 한 칸, 오른쪽으로 한 칸, 오른쪽 아래 대각선 방향으로 1~K칸 움직일 수 있다. 두 명의 사람이 돌아가면서 말을 NM의 위치로 옮긴다고 할 때, 말의 시작 위치에 따라 누가 NM칸으로 옮길 수 있는지 구하시오. 2. 문제 풀이 해설 : N, M, K가 다 300 이하이기 때문에 300^3으로 쉽게 구할 수 있습니다. 거꾸로 보며 갈 수 있는 곳에 Lose (무조건 질 수밖에 없는 칸)가 하나라도 주어진다면 Win (무조건 이길 수밖에 없는 칸)으로 표시합니다. 갈 수 있는 곳이 모두 Win이라면 Lose로 표..
2024.02.14
-
[파이썬 에러] TypeError: unsupported operand type(s) for +: 'int' and 'str'
에러 종류 : TypeError: unsupported operand type(s) for +: '___' and '___' 에러 설명 : 연산 혹은 함수에 전달될 데이터의 타입이 잘못되는 경우에 발생하는 에러 예시 코드 : def f(x): return x+'hello' print(f(1)) x와 더하려는 값인 'hello'는 str(문자형)이기 때문에, int(정수형)인 x와 다르기 때문에 생기는 에러입니다. 파이썬은 타입이 없어서 편하긴 한데, 이럴 때 불편하기도 합니다. 해결 방법 : def f(x): return x+'hello' # case 1 print(f('aa')) # case 2 print(f('1')) x의 값에 문자형을 넣어주면 해결할 수 있습니다. 혹은 1 자체를 문자형으로 바꾸어..
2023.12.31
-
[파이썬] 1219 오민식의 고민 (백준)
1. 문제 설명 문제 : 1219 - 오민식의 고민 https://www.acmicpc.net/problem/1219 사용 언어 : 파이썬 (Pypy3) 문제요약 : 각 거리마다 잃는 돈과 얻는 돈이 주어질 때, 최대로 갖게 될 수 있는 돈을 구하라. 이때, 도착을 못하는 경우나 돈을 무한히 많이 가질 수 있는 경우라면 각각 gg와 Gee를 출력하라. (이 문제를 풀면서 오민식보다 더 심한 고민에 빠졌었다.) 2. 문제 풀이 해설 : 일반적인 벨만포드를 사용한다. 이때, 사이클이 존재하는지를 알기 위해 bfs를 사용하였다. 또한 얻을 수 있는 돈과 잃어야 하는 돈이 각각 주어짐으로 해당 구간에서 얻을 수 있는 돈을 미리 구해두었다. 코드 : import sys; input = sys.stdin.readl..
2023.12.31
-
[파이썬] 1738 골목길 (백준)
1. 문제 설명 문제 : 1738 - 골목길 https://www.acmicpc.net/problem/1738 사용 언어 : 파이썬 (Pypy3) 문제요약 : 각 거리마다 얻거나, 빼앗길 수 있는 금품의 양이 주어졌을 때, 최대의 금품을 갖게 될 수 있는 경로를 구하여라. 알고리즘 : 벨만-포드 2. 문제 풀이 해설 : 일반적인 벨만포드를 이용하여 구할 수 있다. 이때 고려해야 할 점이 몇 가지 있다. 1. 최소 가중치를 찾는 벨만포드와는 다르게, 최대 가중치를 구해야 하므로 distance를 -inf로 초기화해야 한다. (이에 따라 조건식을 조금 바꾸어야 한다.) 2. 중요한 경로 구하기!! 각 노드마다 그 전의 노드를 구해놓아 마지막에 최단 경로를 구한다. 코드 : import sys; input =..
2023.12.31
-
[파이썬] 1865 웜홀 (백준)
1. 문제 설명 문제 : 1865 - 웜홀 https://www.acmicpc.net/problem/1865 (골3) 사용 언어 : 파이썬 (Pypy3) 사용 알고리즘 : 벨만-포드 알고리즘 문제요약 : M개의 양방향 간선인 도로와 W개의 단방향 간선인 웜홀이 이들을 지나는 시간과 함께 주어졌을 때, 음의 사이클이 있는지 구하여라. 2. 문제 풀이 해설 : 음의 사이클을 찾을 수 있는 벨만포드 알고리즘을 이용한다. 여기서 주의해야 할 점이 있는데, 일반 벨만포드 코드와 다르게 아래 코드를 삭제해야 한다. distance[now_node] != INF 왜냐하면 위 코드는 'start'라는 지점에서부터 연결된 각 노드까지의 최단 경로를 구하는 코드이다. 하지만 이 문제에서는 시작 지점이 주어지지 않고, 음의..
2023.12.28
-
2023 연말결산
올해도 벌써 며칠 안 남았다... 올해를 정리하고, 내년을 계획할 겸 이 글을 써 본다. 1학기는? https://adanacoding.tistory.com/21 2023 1학기 회고록 작년 KOI 1차 광탈해서 아쉬워했던 게 엊그제 같은데, 벌써 올해 1학기가 끝나버렸다. 내 나름대로 열심히 보냈던 1학기를 기록해볼까 한다. 🌸 3월, 4월 이때는 내 인생 전체를 통틀어서 가장 열 adanacoding.tistory.com ⛱️ 8월 8월 초부터 진행한 여름학교를 잘 마무리하고, 특별상과 함께 티셔츠를 받으며 NYPC도 끝냈다. 이후에는 해커톤 예선 작품을 제작하고, 바로 개학을 했다. 개학 이후에는 방학식 날 받지 못했던 예절상도 받고, 디미고 시상식에도 참석을 했다. 🔥 9월 여러 가지 발표, 수행..
2023.12.28
-
[아희] 7787 빨간 칩, 파란 칩 (백준)
1. 문제 설명문제 : 7787 - 빨간 칩, 파란 칩 https://www.acmicpc.net/problem/7787 사용 언어 : 아희 (아희로 플레 풀었다!) 문제요약 : A와 B가 돌아가면서 빨간 칩 혹은 파란 칩 k개를 책상에서 제거하여 마지막 칩을 가져가는 게임을 할 때, 승자가 누구인지 구하시오. 2. 문제 풀이풀이 : 스프라그-그런디 정리를 이용한다. 먼저 그런디 수를 찾는다. 이때 그런디 수는 칩 개수를 2로 나누었을 때 나머지가 1이면 1이고, 4로 나누었을 때 나머지가 4면 2이고, 나머지 경우에는 그런디수가 3이다. 빨간 칩의 개수와 파란 칩의 개수의 그런디 수를 XOR 해서 0이 아니면 A가 이기고, 아니면 B가 이긴다. 즉 빨간 칩과 파란 칩의 그런디수가 같다면 B가 이기고, ..
2023.08.19
👾 버그 알아보기
-
[파이썬 에러] TypeError: unsupported operand type(s) for +: 'int' and 'str'
에러 종류 : TypeError: unsupported operand type(s) for +: '___' and '___' 에러 설명 : 연산 혹은 함수에 전달될 데이터의 타입이 잘못되는 경우에 발생하는 에러 예시 코드 : def f(x): return x+'hello' print(f(1)) x와 더하려는 값인 'hello'는 str(문자형)이기 때문에, int(정수형)인 x와 다르기 때문에 생기는 에러입니다. 파이썬은 타입이 없어서 편하긴 한데, 이럴 때 불편하기도 합니다. 해결 방법 : def f(x): return x+'hello' # case 1 print(f('aa')) # case 2 print(f('1')) x의 값에 문자형을 넣어주면 해결할 수 있습니다. 혹은 1 자체를 문자형으로 바꾸어..
2023.12.31
-
[파이썬 에러] ValueError: invalid literal for int() with base 10
에러 종류 : ValueError: invalid literal for int() with base 10 에러 설명 : 인자를 해당하는 데이터 형식 (다음 에러에서는 정수) 으로 변환할 수 없음 예시 코드 : a = int('123') print(a) b = int('Hello World!') print(b) >>> 123 b = int('Hello World!') ValueError: invalid literal for int() with base 10: 'Hello World!' int() 안에 들어갈 값이 문자열은 맞지만, 그 값이 부적절 (int로 변환할 수 없음) 하므로 생기는 오류입니다. 해결 방법: # 1. 인자 변경 b = int('111') print(b) # or # 2. 데이터 형식 ..
2022.12.18
-
[파이썬 에러] IndexError: list index out of range
에러 종류 : IndexError: list index out of range 에러 설명 : 리스트의 인덱스가 범위를 벗어남 예시 코드 (문제 상황) : li = [1, 2, 3] for i in range(4): print(li[i]) >>> 1 >>> 2 >>> 3 print(arr[i]) IndexError: list index out of range li에는 3개의 항목만이 있는데, 4번째 항목을 출력하라고 하여 생긴 오류입니다. 해결 방법 : 이와 같은 상황일 때에는 대표적으로 2가지 해결 방법이 있습니다. # 1. 호출하는 인덱스 값을 줄이기 li = [1, 2, 3] for i in range(3): print(li[i]) # 2. 리스트에 항목 추가하기 li = [1, 2, 3] li.ap..
2022.12.06
✏️ KOI 문제풀이
-
2023 KOI(한국정보올림피아드) 중등부 1차 1교시 문제 풀이 (1번~12번)
문제 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2023/1/ 2023년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이지에서 확인해 주세요. koi.or.kr 1. 양팔 저울 정답 : 12kg 2kg + 5kg + (물 1kg) = 8kg / 2kg + (물 6kg) = 8kg / 2kg + (물 11kg) = 5kg + 8kg 2. 봉투 정답 : 7 지폐들 중 가장 적은 금액이 3000원 이므로, 모든 봉투에 6000원 미만의 금액이 들어가야 한다. 즉 모든 봉투에 천 원짜리가 5개 이하로 들어가 있어야 한다. 9장이 들어있는 봉투에서 4개를 빼고, 8장이 들어있는 봉투에서 3개를 빼어 2개의 봉투를 추가..
2024.02.17
-
2023 정보올림피아드 중등부 1차 후기
2주 지났지만 기록용으로 짧은 정보올림피아드 후기를 써보려고 한다. 해설을 원한다면, 이 글에는 없으니 조금만 기다리길 바란다. (아직 기말 때문에 다 못풀었음요) 0. 카메라 배치 이사하고 처음으로 정보올림피아드를 보게 되어서 카메라 배치에 약간의 어려움이 있었다. 책상 옮기면서 겨우겨우 카메라를 알맞게 배치할 수 있었다! (차라리 가서 하는 거면 이렇게 안 해도 되는데...ㅠ) 그 후 남은 고사실 입장 시간 전에 머리를 깨우기 위해 백준에서 실버 티어의 문제를 한두 개 풀었다. 1. 감독관 확인 시험 전에 카메라 배치하느라 고생했었는데, 들어가면 감독관님이 친절하게 카메라를 어떻게 하라고 설명해 주신다. 그리고 한 고사장 당 인원이 좀 있었기 때문에, 꽤 많은 시간이 소요되었다. 이 시간에는 디스코드..
2023.05.28
-
2020 KOI(한국정보올림피아드) 중등부 1차 1교시 문제풀이 (1번~12번)
문제 출처 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2020/1/ 2020년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이지에서 확인해 주세요. koi.or.kr [중등부 유형 1 - 사고력] 01번 7의 거듭제곱들의 일의 자리는 7, 9, 3, 1을 반복한다. 이들을 5로 나눈 나머지는 2, 4, 3, 1이다. 2, 4, 3, 1, 2, 4, 3, 1... 쭉 4개가 반복이 되고, n번째 수는 n을 4로 나누었을 때 나머지가 1이면 7^n/5의 나머지는 2, 2면 4, 3이면 3, 0이면 1이라는 것을 알 수 있다 2020/4의 나머지는 0, 1이 된다. [중등부 유형 1 - 사고력] 02번 AA로 이길..
2023.04.23
-
2019 KOI(한국정보올림피아드) 중등부 1차 1교시 문제풀이 (1번~12번)
문제 출처 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2019/1/ 2022년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이지에서 확인해 주세요. koi.or.kr [유형1] 1번 2019*2021 = 4080399, 2로 계속 나누면 2040199 1020099 510049 255024 127512 ... 이고 이때 나타난 나머지 중 오른쪽부터 연속된 1의 개수는 4개. [유형1] 2번 3부터 15까지 모두 더하면 117. 117-x = 106, x = 11 [유형1] 3번 16*(20^1) = 320. 13*(20^0) = 13*1= 13. 320+13 = 333 [유형1] 4번 어린이 2명이 건너고, ..
2023.03.19
-
2022 KOI(한국정보올림피아드) 중등부 1차 1교시 문제풀이 (13번~20번)
문제 출처 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2022/1/ 2022년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이지에서 확인해 주세요. koi.or.kr 13. 게임 어떤 방법으로든 17번의 게임을 하면 정답이다. 그렇게 되면 한 플레이어의 동전이 1개 남게 된다. 14. 한붓 그리기 각 정점에 연결된 간선의 수가 모두 짝수개이거나 2개만 홀수개인 경우에만 한붓그리기의 조건이 성립한다. 연결된 간선의 수를 짝수로 만들어서 연결하면 다음과 같다. 그 후 한붓그리기를 하여 성공한다면 정답처리 된다. 15. 수열 만들기 총 10번의 작업을 수행하여 두 수열을 같게 만들면 정답 처리가 된다. 16. 트리..
2023.02.26
-
2021 KOI(한국정보올림피아드) 중등부 1차 1교시 문제 풀이 (1번~12번)
문제 출처 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2021/1/ 2021년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이지에서 확인해 주세요. koi.or.kr 1. 다른 모자 쓰기 교란순열을 이용하는 문제이다. (교란순열이란 모든 원소의 위치를 바꾸어 원래 위치한 원소가 전혀 다른 위치에 있는 순열) 순열은 0, 1, 2, 9... 로 4번째는 9이다. 조금 더 쉽게 생각해본다면 이렇게 생각할 수 있다. 사람 4명을 P1/2/3/4로, 모자 4개를 H1/2/3/4로 생각할 때 될 수 있는 경우의 수를 나열하면 아래와 같다. P1은 H2, 3, 4까지 3개의 모자를 쓸 수 있고 모자 하나를 쓸 때 3가지..
2023.01.23
-
2022 KOI(한국정보올림피아드) 중등부 1차 1교시 문제 풀이 (7번~11번)
문제 출처 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2022/1/ 2022년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이지에서 확인해 주세요. koi.or.kr 2022년 1번 ~ 6번 문제풀이 : https://adanacoding.tistory.com/6 2022 KOI(한국정보올림피아드) 중등부 1차 1교시 문제 풀이 (1번~6번) 문제 출처 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2022/1/ 2022년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이 adanacoding.tistory.com 7...
2022.12.04
-
2022 KOI(한국정보올림피아드) 중등부 1차 1교시 문제 풀이 (1번~6번)
문제 출처 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2022/1/ 2022년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이지에서 확인해 주세요. koi.or.kr 2022년 1번 ~ 6번 문제풀이 : https://adanacoding.tistory.com/7 2022 KOI(한국정보올림피아드) 중등부 1차 1교시 문제 풀이 (7번~11번) 문제 출처 및 한국정보올림피아드 1차 대회 공식 홈페이지 링크 : https://koi.or.kr/koi/2022/1/ 2022년도 한국정보올림피아드 1차 대회 대회 응시자를 위해 공지되었던 안내사항은 응시자 안내사항 페이 adanacoding.tistory.com 1..
2022.12.04