We will find a way, we always have.

-interstellar

Problem Solving 101

[LeetCode] 3036. Number of Subarrays That Match a Pattern II

🔈 문제 You are given a 0-indexed integer array nums of size n, and a 0-indexed integer array pattern of size m consisting of integers -1, 0, and 1. A subarray nums[i..j] of size m + 1 is said to match the pattern if the following conditions hold for each element pattern[k]: nums[i + k + 1] > nums[i + k] if pattern[k] == 1. nums[i + k + 1] == nums[i + k] if pattern[k] == 0. nums[i + k + 1] < nums[i..

[LeetCode] 1657. Determine if Two Strings Are Close

🔈 문제 Two strings are considered close if you can attain one from the other using the following operations: Operation 1: Swap any two existing characters.For example, abcde -> aecdb Operation 2: Transform every occurrence of one existing character into another existing character, and do the same with the other character. For example, aacabb -> bbcbaa (all a's turn into b's, and all b's turn into ..

[백준] 28357번: 사탕 나눠주기

🔈 문제 소수전공 수업을 마무리한 찬우는 축하의 의미로 학생들에게 사탕을 나누어 주려 한다. 구체적으로, 기준이 되는 음이 아닌 정수 $X$를 정한 뒤 최종 점수가 $X$점을 넘는 학생들에게 점수가 높은 만큼 많은 사탕을 줄 것이다. 즉, $X+1$점을 받은 학생은 $1$개, $X+2$점을 받은 학생은 $2$개, $T$($T > X$)점을 받은 학생은 $T - X$개의 사탕을 받게 된다. 찬우는 학생들에게 최대한 많은 사탕을 나누어주고 싶기 때문에 기준 점수 $X$를 가능한 한 낮게 정하려 한다. 하지만, 지금 가지고 있는 돈으로는 사탕을 $K$개까지만 살 수 있기 때문에 사탕의 총 개수가 $K$개를 넘으면 안 된다. 찬우의 수업은 총 $N$명이 수강했고, $i$번째 학생은 $A_i$점을 받았다. 수강생..

[코드포스] 1872 D. Plus Minus Permutation

📖 Solution 문제의 요구사항을 정리해보면 길이 n의 조합중에서 x배수의 숫자의 합에서 y배수의 숫자의 합의 차를 가장 크게 만들 수 있는 조합을 찾고 그 차를 출력하는 문제이다. A - B의 차를 크게 만들기 위해서는 A를 최대한 크게, B를 최대한 작게 만들면 된다. 그렇다면 x의 배수 위치에는 n부터 내림차순으로 배치하고, y의 배수 위치에는 1부터 오름차순으로 배치하면 된다. 둘이 겹치는 부분이 있을 수 있는데 이는 0이 되기 때문에 상관없다. 그렇다면 이제 구해야 하는 점은 n에서 x 배수의 갯수, y 배수의 갯수 그리고 겹치는 부분이다. 이 겹치는 부분은 lcm 을 사용하여 찾을 수 있다. 💻 Code HTML 삽입 미리보기할 수 없는 소스 🔗 Problem https://codeforc..

[백준] 20560번: 맛집 탐방

🔈 문제 은수는 맛집을 탐방하러 도시로 여행을 떠날 것이다. 은수가 갈 도시에는 총 $N$개의 맛집이 있다. 도시에는 맛집에서 맛집으로 이동할 수 있는 일방통행 길이 $M$개 있고, 각 길의 중간에는 기념품 상점이 있다. 어떤 길은 출발하는 맛집과 도착하는 맛집이 같을 수도 있으며, 여러 길이 같은 맛집을 연결할 수도 있다. 은수는 도시의 맛집에서 여행을 시작해서, 길을 이용해 맛집을 탐방하다 도시의 맛집에서 여행을 끝낼 것이다. 여행을 시작한 곳과 여행을 끝낸 곳이 같을 필요는 없다. 도시는 은수가 사는 마을에서 멀리 떨어져 있기 때문에, 은수는 한 번의 여행에서 최대한 많은 맛집과 상점을 들르려고 한다. 특히, 여행 중에 모든 맛집을 방문하거나 모든 기념품 상점을 방문한다면 다음 여행에서 할인 혜택을..

[백준] 1185: 유럽 여행

🔈 문제 민식이는 여름에 유럽여행을 떠날 계획이다. 방문할 나라는 총 N개의 나라이고 편리하게 1번부터 N번까지 번호를 붙였다. 또한 이 나라들 사이에 이동 가능한 길은 M개가 있는데 민식이는 귀찮기 때문에 N개의 나라가 서로 연결된 것을 유지시키면서 최대한 많은 길을 지도에서 제거하고자 한다. 즉, N-1개의 길만을 남겨야할 것이다. 각 길을 통과하기 위한 비용이 각기 다르고 한 나라를 도착하면 내야할 비용 역시 나라마다 다르게 정해져있다. 민식이는 모든 도시를 최소 한번 이상 방문하면서 최소 비용이 드는 방법을 찾고 있다. 물론 길과 나라는 여러 번 방문할 수 있고, 첫 시작 나라는 민식이가 정할 수 있고, 마지막 나라는 시작 나라이어야 한다. 이러한 민식이의 유럽 계획을 도와주자. 📝입력 첫 줄에는..

[구름톤 챌린지] 완벽한 햄버거 만들기 - 학습 일기 (1-4)

🔈 문제 문제의 요구사항은 N개의 정수 데이터가 주어졌을 때, 조건대로 정렬되어 있는지 확인하는 문제입니다. 여기서 주어진 조건은 배열의 최대값을 기준으로 왼쪽이나 오른쪽으로 갈수록 정수의 값이 같거나 감소해야 한다. 📚 문제 풀이 문제의 조건을 만족하려면 오름차순, 내림차순 혹은 올라갔다 내려가도록 정렬되어있는지 파악하면 된다. 조건을 만족하려면 배열안에 nums[i] > nums[i+1] < nums[i+2] 이 True 인 곳이 없어야 한다. 감소하다가 증가하는 값이 존재하면 안되기 때문이다. 반복문을 사용해 해당 값을 포함하고 있는지 아닌지 bool 값을 반환하여 문제를 해결할 수 있다. 모든 조건문이 참이면 참을 반환하는 all() 을 사용하여 문제를 해결하였다. 💻 코드 HTML 삽입 미리보기..

Problem Solving 2023.08.18

[백준] 28457번: Every? Only One's Marble - 파이썬

🔈 문제 유틸은 오늘도 혼자 집에 있다. 심심해서 같이 부루마불 게임을 할 사람을 찾아봤지만 아무도 없었다. 그렇게 한 시간, 두 시간... 도저히 참을 수 없었던 유틸은 부루마불 게임을 혼자 할 방법을 생각해 냈다. 혼자 하는 부루마불 게임에 적용되는 규칙은 다음과 같다. 일반 칸은 두 종류다. 도시 칸: 돈을 내고 땅을 사야 하는 칸 황금 열쇠 칸: 특정한 효과가 있는 카드가 발동되는 칸 특수 칸은 네 종류다. 시작 칸: 이 칸에 정확히 멈추거나 지나가게 되면, 월급을 받게 된다. 무인도 칸: 이 칸에 정확히 멈추게 되면, 다음 세 턴 동안 갇히게 된다. 갇혀 있는 동안, 두 주사위를 던졌을 때 눈이 같은 수로 나오면 무인도를 탈출하게 되며 두 주사위를 한 번 더 던져서 나온 수만큼 이동한다. 사회복..