Contents 1. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42883 쉽게 말하면 number(문자열)과 k(정수)가 주어졌을 때, number에서 k개의 숫자를 뺐을 때 만들어지는 가장 큰 수를 출력하라는 것입니다. 1) 예제 입출력 number="1924"이고, k=2 일 때, 1과 2를 빼서 "94"를 만든 게 가장 큰 수입니다. 2. 핵심 논리⚡️ 풀이의 핵심 논리는 맨 앞자리수가 클수록 숫자는 커진다는 점을 이용합니다. 스택을 이용해서 맨 앞자리부터 순차적으로 수를 하나씩 검사하며, 앞자리 수를 가능한 크게 만드는 선에서 k개의 숫자를 제외시키는 것입니다. 3. 풀이✅ 1) 코드 def solution(number, ..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/12904 ) 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net B : 문자열 S ABBA : 문자열 T 아래와 같은 2가지 규칙을 지키며, 문자열 S를 문자열 T로 바꿀 수 있으면 1을, 바꿀 수 없으면 0을 출력하는 문제입니다. 문자열의 뒤에 A를 추가한다. 문자열을 뒤집고 뒤에 B를 추가한다. 첫 번째 예제에 대해 B가 ABBA가 되는 과정을 살펴보겠습니..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/12919 ) 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net B : 문자열 S BABA : 문자열 T 아래와 같은 2가지 규칙을 지키며, 문자열 S를 문자열 T로 바꿀 수 있으면 1을, 바꿀 수 없으면 0을 출력하는 문제입니다. 문자열의 뒤에 A를 추가한다. 문자열의 뒤에 B를 추가하고 문자열을 뒤집는다. 첫 번째 예제에 대해 다음과 같은 과정을 거치면..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/1912) 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 10 : 수의 개수 10 -4 3 1 5 6 -35 12 21 -1 : 수의 개수만큼 수를 나열(띄어쓰기로 수를 구분) 수의 나열에 대해, 숫자를 연속으로 더할 때, 나올 수 있는 최댓값을 출력합니다. 2. 전체 코드 input() # n은 쓰지 않으니 그냥 input만 받기 s=[*map(int,input().split())] # 수열을 리스트..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/1463) 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 주어진 수 x에 대해, 아래 3가지 연산을 통해 1을 만듭니다. 이때, 연산을 사용하는 횟수의 최솟값을 출력합니다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 예제 입력 2번의 10을 보면, 10 -> 9 -> 3 -> 1로, 3번 연산이 최솟값입니다. 2. DP - BottomUp 풀이(for문 사용) x=int(input()) # 수 입력받기 d=[0]*(x+1) # 1-based for..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/2579) 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 6 : 아래 주어질 계단의 개수 10 : 첫 번째 계단의 점수 20 : 두 번째 계단의 점수 .. 20 : 마지막(6번째) 계단의 점수 이제 아래 3가지 규칙에 따라 계단을 오를 때, 최대 점수를 출력해야 합니다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음다음 계단으로 오를 수 ..
* 전체 코드 ### 정수 1개 입력받기 N = int(input()) ### 한줄 정수 리스트 입력받기 li = [*map(int,input().split())] ### 여러개 정수 입력받기 a,b,c = map(int,input().split()) ### 여러 줄의 정수 리스트 입력받기 n = int(input()) li = [int(input()) for _ in range(n)] ## n 없이 한 줄로 li = [int(input()) for _ in range(int(input()))] ### N행 배열 입력받기 #### 숫자인 경우 N=int(input()) # N개의 행 arr=[[*map(int,input().split())] for _ in range(N)] #### 문자열인 경우 N=i..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/2156) 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 처음에 포도주 개수(n)가 주어지고, 다음에 n 줄에 걸쳐 각 포도주 잔에 들어있는 포도주의 양이 주어진다. 6 : 포도주 개수(n) 6 : 첫 번째 포도주 잔의 포도주 양 ... 1 : 마지막 포도주 잔의 포도주 양 입력받은 포도주 잔의 포도주양을 리스트로 만들면 [6, 10, 13, 9, 8, 1]와 같습니다. 이제 연속으로 3잔 선..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/2294) 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주 www.acmicpc.net 동전 종류 개수(n)와 만들어야 하는 금액(k)이 주어지고, 다음 n개의 줄에 걸쳐, 각각 동전의 가치가 주어집니다. k원을 만들기 위해 사용되는 최소 동전 개수를 출력해야 합니다.(불가능한 경우 -1, 각 동전은 몇 개라도 사용 가능) 3 15 : 동전 종류는 3개, 목표 금액은 15 1 : 첫 번째 동..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/2606) 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 주어진 컴퓨터에 대해, 1번 컴퓨터와 연결된 컴퓨터가 총 몇 개인지 출력하는 문제입니다. 예제를 보겠습니다. 7 : 총 컴퓨터의 대수입니다. 6 : 컴퓨터 간에 연결된 선의 개수입니다. 1 2 : 1번 컴퓨터와 2번 컴퓨터가 연결되었다는 의미입니다. 2 3 ... 4 7 -> 입력을 바탕으로 컴퓨터 간의 연결을 시각화하면 아래와 같습니다. ..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/14248) 14248번: 점프 점프 첫 번째 줄에는 돌다리의 돌 개수 n이 주어진다.(1≤n≤100,000) 돌의 번호는 왼쪽부터 1번에서 n번이다. 다음 줄에는 그 위치에서 점프할 수 있는 거리 Ai가 주어진다.(1≤Ai≤100,000) 다음 줄에는 출 www.acmicpc.net 예제를 보겠습니다. 5 : 돌이 5개 있는 경우, 1 4 2 2 1 : 각 돌다리 별로 움직일 수 있는 칸의 개수가 주어집니다. 3 : 출발점이 3번째 있는 돌입니다. 방문 가능한 돌들을 살펴보겠습니다. 1 4 2 2 1 중 빨간 색칠된 곳에서 시작합니다. 처음에 왼쪽으로 2칸 가서 1에 도착한 뒤, 오른쪽..
Contents 1. 배경 Mac에서 주피터 노트북으로 코딩을 하다가, 노트북이 있는 경로의 폴더를 열거나, vscode를 열 때 일일이 찾아서 했습니다. 하지만 간단한 명령어로 이를 해결할 수 있습니다. 2. 폴더 열기(Finder) !open . 위 명령어를 나누어 설명해 보겠습니다. 1) ! : 주피터 노트북에서 터미널 명령어를 쓰겠다는 표시입니다. 2) open . : open 명령어는 맥의 Finder를 열겠다는 명령어이고,. 은 현재 경로의 폴더(디렉터리)를 지칭합니다. * 출력 3. Vscode 열기 !code . 폴더 여는 방법과 똑같지만, code라는 명령어 부분이 다릅니다. 이는 Vscode를 설치하면 Mac에서 자동으로 code라는 명령어로 사용하실 수 있습니다. * 출력 4. 결론 ..