본문 바로가기

코딩테스트/백준13

[백준] 1011: Fly me to the Alpha Centauri 파이썬 풀이 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 문제설명 어떤 이동거리에 대해 움직이는 최소 횟수를 구하는 문제입니다. 이동 방법은 1칸 점프 부터 시작해서, n 번째에 x칸 점프 했다면 n+1 번째는 x-1 or x or x+1 칸 점프할 수 있습니다. 끝 지점은 반드시 1칸 점프로 도착해야합니다. 풀이과정 1. 이동거리가 n일 때, 최소 이동횟수를 구해봤습니다. 2. 위를 구해보니, 특정 이동 횟수에 대해 갈 수 있는 최대 거리의 규칙이 보였습니다. 3. 이동횟.. 2021. 7. 28.
[백준] 17367: 공교육도박 파이썬 풀이 17367번: 공교육 도박 공교육의 수호자 수찬이는 공교육의 정수라고 할 수 있는 한국정보올림피아드의 문제를 가지고 게임을 하려고 한다. 수찬이는 2010년도 한국정보올림피아드 시·도 지역본선 중등부 1번 문제를 www.acmicpc.net 풀이 게임의 진행 주사위를 굴릴 기회가 있으면, 현재 상태에 대해 기댓값(현 상태에서 한 번더 주사위를 굴렸을 때의 기댓값)을 판단한다. 판단한 기댓값이 현재 상금(현재 게임을 멈췄을 때 얻을 수 있는 상금)보다 높다면 go 아니라면 멈추고 현재 상금을 받음 이러한 메커니즘 때문에, 주사위를 굴릴 기회가 많을 수록 기댓값이 높아짐 풀이 d[x][i][j][k] : 굴릴 기회가 x 번 남았을 때, 주사위 눈이 i, j, k가 나왔을 때 얻을 수 있는 상금(혹은 상금의 .. 2021. 7. 15.
[백준] 1072: 게임 파이썬 리뷰 - 연산 오류, Y*100//X, int(Y/X*100) 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net 풀이는 전형적인 이분탐색 문제입니다. 하지만 연산에 관한 문제 때문에 리뷰를 해보려합니다. 해당 문제에서 승률을 계산하는 방법은 두가지가 있습니다. 1. Y*100//X 2. int(Y/X*100) 해당 문제에서 2번을 이용해 연산을 하면 틀립니다. 간단한 예시는 29/50이 있습니다. 29/50*100=58.0 이어야 하는데, 파이썬 연산에서는 그렇지 않았습니다. 여기서 주목해야 할 것은 실수의 연산입니다. 실수의 연산은 부정확할 수가 있으므로 사용에 .. 2021. 5. 9.
[백준] 6236: 용돈 관리 파이썬 리뷰 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net 풀이는 해당 블로그를 참고했습니다. 전형적인 이분 탐색 문제입니다만... 고려하지 못한 부분과 실수한 부분이 많아 이를 되짚어 보려합니다. 문제 풀이는 적절한 금액(조건을 만족하면서 최소가 되는)을 이분탐색으로 찾는 것입니다. 처음에 제가 잘못 생각한 것은 하루 소비 금액 > 뽑을 수 있는 금액(설정 금액) 이어도 하루에 여러번 돈을 뽑으면 된다는 것이었습니다. 문제에서 돈을 뽑을 때는 가지고 있는 돈을 모두 반환하고 뽑기 때문에 잘못된 생각입니다. 이 때문에 설정 .. 2021. 2. 23.