Silver/Silver V(5)
-
BOJ 14916 - 거스름돈 (Python3)
수학적으로 접근할 수 있는 문제는 먼저 수학으로 접근해 보아야 한다. 런타임 전의 전처리를 뇌로 하는 것이다. 인간의 뇌라고 특별할 게 있겠는가. 돌발상황에 아주 잘 대처하는 거대한 생체 컴퓨터인 것을. 머리로 계산하고 코드를 단순히 짜는 게 오히려 더 낫다(고 한다). 주석만 적당히 달려 있다면. 물론 기본기가 어느 정도 되어 있다는 전제 하에 말이다. 그럼 본격적으로 풀이에 돌입해 보자. 문제 춘향이는 편의점 카운터에서 일한다. 손님이 2원짜리와 5원짜리로만 거스름돈을 달라고 한다. 2원짜리 동전과 5원짜리 동전은 무한정 많이 가지고 있다. 동전의 개수가 최소가 되도록 거슬러 주어야 한다. 거스름돈이 n인 경우, 최소 동전의 개수가 몇 개인지 알려주는 프로그램을 작성하시오. 예를 들어, 거스름돈이 1..
2022.11.24 -
BOJ 10814 - 나이순 정렬 (Python3)
lambda 형식으로 되어 있는 함수는 한 줄로 아주 간단한 연산을 하게 만들어주는 함수이다. 아주 간단한 연산이라고 해 봤자 어떤 경우에는 lambda를 굳이 안 써도 될 정도로 간단하겠지만, 가끔씩 쓸 만한 경우가 있다. 그런 경우의 대표적 예시 중 하나가 바로 이 문제. 그럼 본격적으로 풀이에 돌입해 보자. 문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며..
2022.11.23 -
BOJ 1676 - 팩토리얼 0의 개수 (Python3)
필요한 수학적 배경 지식을 중학생이 간단하게 이해할 수 있으면 브론즈 II에서 브론즈 I 티어를 주는 것이 권장되어 있다. 달리 말하면 알고리즘 짜는 게 아무리 간단하기 그지없더라도 중학생 수준에서 유추하기 어렵다면 실버 수준으로 올라간다는 이야기다. 이게 조금 불합리한 걸 넘어서 난이도 역전 현상의 주범이 되어 있는 건 내 착각일까? 내가 수학적 공대생이라서가 아니라, 이런 문제는 어지간한 브론즈 II보다도 쉬워 보인다. 그럼 본격적으로 풀이에 돌입해 보자. 문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 예제 입력) # 예제 입력 1 10 # 예제 입력 2 3 출력 첫째 줄에 구한 0의 개..
2022.11.18 -
BOJ 25966 - 배찬우는 배열을 좋아해 (Python3)
이건 얼마 전 출제된 2022 Goricon B번 문제였다. A번 문제는 무난무난한 브론즈 3 ~ 브론즈 4 문제니 추후 업로드할 것이다. 간단한 2차원 배열 문제이다. 그렇다고 하더라도 무지성으로 구현하면 시간초과가 날 수 있으니 조심하자. 내 코드도 거의 5초를 잡아먹었다. 파이썬이 특히 느린 것은 맞지만 다른 언어군인 C++나 C에서도 툭하면은 시간초과가 튀어나오더라. 그럼 본격적으로 풀이에 돌입해 보자. 문제 찬우는 오늘 프로그래밍 기초 강의에서 2차원 배열에 대해 배웠다. 너무 재미있던 찬우는 2차원 배열에다 연산을 진행하기로 결심했다. 아래와 같은 두 가지 종류의 연산이 쿼리로 주어진다. 0 i j k : i번 행의 j번 열의 값을 k로 바꾼다. 1 i j : i번 행과 j번 행을 swap한다..
2022.11.17 -
BOJ 9655 - 돌 게임 (Python3)
대부분의 문제는 한 가지 이상의 풀이 방법을 가진다. 그 중 가장 최적인 방법을 골라 쓰는 것이 문제를 잘 푸는 것이다. 가장 쉬운 길이나 꼼수만 알고 있는 사람을 문제를 잘 푸는 사람이라고 하지는 않는다. 문제를 잘 푸는 사람이 되기 위해서, 9659번 문제의 열화판인 9655번 문제를 다이나믹 프로그래밍(Dynamic Programming) 기법을 이용해 푸는 방법을 같이 보도록 하겠다. 간단한 다이나믹 프로그래밍 문제도 골드에 랭크되는 만큼, 결코 몰라도 좋은 기법이 아니다. 이 참에 확실히 익혀 보도록 하자. 그럼 본격적으로 풀이에 돌입해 보자. 문제 돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개..
2022.11.12