Silver(16)
-
BOJ 10814 - 나이순 정렬 (Python3)
lambda 형식으로 되어 있는 함수는 한 줄로 아주 간단한 연산을 하게 만들어주는 함수이다. 아주 간단한 연산이라고 해 봤자 어떤 경우에는 lambda를 굳이 안 써도 될 정도로 간단하겠지만, 가끔씩 쓸 만한 경우가 있다. 그런 경우의 대표적 예시 중 하나가 바로 이 문제. 그럼 본격적으로 풀이에 돌입해 보자. 문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며..
2022.11.23 -
BOJ 1158 - 요세푸스 문제 (Python3)
상당히 코딩을 늦게 시작한 편이다. 그래서 자료구조의 자 자도 모르는 상태에서 오늘까지 이르렀다. 오늘이 정확히 16일차고, 그 동안 큐(Queue), 스택(Stack), 덱(Deque) 등의 자료구조를 어떻게 사용하는지 알았다. 힙(Heap)도 오늘 배웠는데, 아직 체화시키기에는 조금 모자라서 오늘은 덱을 사용하는 요세푸스 문제를 풀겠다. 사실 큐랑 스택을 하나로 묶어서 덱으로 쓰는 게 가장 편하더라. 덱은 큐와 스택을 한 번에 사용 가능하니 말이다. 그럼 본격적으로 풀이에 돌입해 보자. 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 ..
2022.11.22 -
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 25955 - APC는 쉬운 난이도 순일까, 아닐까? (Python3)
어제 출제된 2022 아주대학교 프로그래밍 경시대회 APC A번 문제였다. 다행히 A번이 가장 쉬운 난이도를 가진 문제라서 풀었지, 아니었으면 A번 문제에서 막혔다가 튕겨져 나갈 뻔 했다. 네 번 도전해서 겨우 통과했는데, 할 수 있는 모든 에러를 한 번씩 다 저질러 본 느낌이다. 그럼 본격적으로 풀이에 돌입해 보자. 문제 선우는 APC 문제를 만들기 위해 고민하며 역대 APC들을 둘러보던 와중, 이 대회들의 문제가 난이도가 쉬운 순으로 배치되어 있는 경향을 발견했다! 문제 출제가 완료되고 올해도 이러한 기조를 지키려고 한 선우는 출제하기로 한 문제들에 예상 난이도를 매겨놓았다. 난이도는 브론즈 티어, 실버 티어, 골드 티어, 플래티넘 티어, 다이아몬드 티어 순으로 어려워지며, 동일 난이도가 없도록 엄밀..
2022.11.15 -
BOJ 9095 - 1, 2, 3 더하기 (Python3)
백준에는 많은 시리즈 문제들이 존재한다. 아주 다양한 방법으로 별을 찍는 별 찍기 시리즈라거나, 다이나믹 프로그래밍의 진수를 보여주는 돌 게임 시리즈(그 중 두 문제는 이미 다룬 바 있다. 9655번 문제라거나 9659번 문제.), 초보적인 구현 능력을 키우는 골뱅이 찍기 시리즈. 그리고 이 문제로부터 시작되는 다이나믹 프로그래밍의 기초체력을 길러 주는 1, 2, 3 더하기 시리즈가 있다. 이게 다이나믹 프로그래밍의 문제이긴 하지만, 수가 좀 적은가? 재귀 함수의 방법으로 풀어보고자 한다. 원래 하라는 대로 안 하는 게 가장 재미있는 법이다. 그럼 본격적으로 풀이에 돌입해 보자. 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. ..
2022.11.13