n에서 lost 배열의 개수만큼을 뺀다 (이 사람들은 무조건 수업 들을 수 있음)lost와 reserve 배열 원소를 서로 빼고 절댓값 1이면 +1 카운트한다카운트된 총 사람 수를 리턴한다→ 문제점: lost, reserve 배열의 크기가 같지 않은 경우도 있어 문제
이름을 한 글자씩 쪼갠다가운데 문자(m)보다 작으면 왼쪽으로 먼저 세기가운데 문자(m)보다 크면 오른쪽으로 가서 세기A의 최대 길이가 포인트→ A가 여러 군데 연속되면 더 적은 쪽으로 가야 함좌우: 연속된 A는 갈 필요가 없다→ 이동하다가 연속된 A를 만나면 반대방향으
문자열을 하나씩 쪼갠다len(number) - k 크기의 배열에 숫자를 넣을 건데전(왼쪽)꺼보다 숫자가 더 크거나 같으면 배열에 넣는다스택 활용하기 (파이썬에서는 리스트로 가능)k가 0보다 클 때까지 반복스택 마지막 값 < i 일 때 스택 pop, k--그렇지 않
스택에 people이 들어오면 저장스택 데이터를 더한 값이 limit보다 크면 popk ++스택에 있는 값을 다 더해서 limit과 비교하는 부분을 못함투 포인트로 접근하기start와 end 인덱스 값을 서로 더해서 limit보다 작으면 두 명 이상 보트 탈 수 있음→
DP(동적 프로그래밍)을 사용해서 풀이처음에 어떤 걸 사용해야 하는지 잘 보이지 않았음.어렵네요 .. 발전하겠죠 ..
i 라고 가정할 때, i는 1씩 커지고 j는 j-1과 같거나 1 커짐더해진 값을 누적값으로 나타낸 후 바꿀 수 있는 값 중 가장 큰 값을 선택함배열 맨 앞 요소는 i-1랑 더함 (7일 때, 1이랑 0이랑 더함)배열 맨 뒤 요소는 i-1이랑 더함 (10, 15일 때, 2
이중 반복문으로 (1,1)에서 (m,n)까지 반복중간에 웅덩이(puddles)가 되면 카운트하지 않음. 지나갈 수도 없음.움직일 때마다 +1 씩 카운트카운트 리턴동적 프로그래밍 dp 사용1, 1 부터 시작하는게 꼬이지 않도록 0을 임의로 만들어줌인덱스 0은 사용하진 않
반복문을 돌면서 numbers 배열 인덱스값들을 더하고 뺀 후 스택(tmp)에 저장한다스택에 있는 값이 target 값과 같다면 count(아래 코드에서는 answer) 값을 1 증가시킨다bfs/dfs 풀이인 이유numbers가 1, 1, 1, 1, 1 일 때,1은 2
computer i, j가 연결되어 있으면 computersi는 1이다computersi 는 1이다dfs 로 구현모든 컴퓨터를 다 돌 때까지 dfs 반복한다visited라는 빈 배열을 False, False, False.. 로 초기화를 시키고 직/간접적으로 방문할 때마
문자열 s를 공백을 기준으로 구분한다고 했으니까 공백을 기준으로 나눈다문자열 s를 숫자로 바꿔서 리스트에 담는다리스트를 정렬한다리스트의 맨 첫 번째(최솟값)와 마지막(최댓값) 값을 공백을 두고 출력한다둘 이상의 정수가 공백으로 구분되어 있다공백을 기준으로 나누면 되고,
대문자로 만드는 내장 함수를 이렇게 배운다.아래처럼 하면 테스트 케이스에서 런타임 에러가 난다.capitalize()첫 문자만 대문자로 만드는 함수.만약 첫 글자가 영문이 아니면 대문자가 되지 않음
하나는 오름차순으로 정렬된 배열, 하나는 내림차순으로 정렬된 배열을 만들어서 순서대로 곱하면 된다(사실 문제가 길어서 조금 대충 읽고 순서대로 곱했더니 두 번째 입출력 예시에서 오류가 났다. 실전에서는 안 그러겠지만 확실히 문제를 꼼꼼하게 읽을 필요가 있다.)sort(
s.count('0')문자열 s 안에 있는 0의 개수를 구한다.s = s.replace('0', '')문자열 s 안에 있는 0을 공백으로 치환한다.s = (bin)(len(s))2:문자열 s의 길이를 이진법으로 바꾸면 0b~로 시작한다따라서 문자열의 2번째 문자부터 출
이렇게 하면 정확도는 100%가 나오지만 효율성이 떨어진다.시간복잡도가 O(n^)이기 때문이다.투 포인트 사용이 필요하다start와 end를 만들어서 start는 고정되어 있고 end만 먼저 끝까지 돈다.다 돌았으면 배열에서 start를 빼고 end만 하나씩 증가시켜
배열을 사용해 코드를 작성하고, 배열 안에 넣기 전에 % 1234567 해야 한다파이썬은 재귀호출이 최적화 되어 있지 않음
count 함수를 사용하면 굳이 반복문을 쓰지 않아도 깔끔하게 표현할 수 있다개수가 필요한 문제라면 count 함수 떠올리기다음 큰 수를 찾기 위해 반복문을 사용한다n보다 큰 수여야 하므로 n+1부터 시작하고, 제한 사항에서 n은 1,000,000이하의 자연수라고 했으
투 포인터? 스택? 스택!문자열이기 때문에 스택 길이가 0일 때를 따로 분리해서 조건문을 써줘야 함len(stack) == 0 스택의 길이가 0일 때(맨 첫 원소) 스택에 i를 넣는다.스택의 마지막 원소와 i가 같으면 (연속된 두 글자면) 스택에서 삭제한다그 외의 경우
끝말잇기를 실패한 조건문에서 바로 리턴해주지 않아 테스트 케이스에서 오류가 발생했다\-> 바로 리턴을 해주도록 수정하고 그 외 성공한 경우는 따로 0, 0을 리턴했다끝 글자와 시작하는 글자를 비교하려면wordsi != wordsi-1이미 나온 단어인지 판단하려면word
brown과 yellow를 더한 총합의 약수가 return 값이 될 수 있는 조건약수 구하는 방법노란색의 가로, 세로 칸 수를 이용한다노란색 가로 + 2, 노란색 세로 + 2 가 리턴값이다(노란색 가로 x 2) + (노란색 세로 x 2) + 4 가 갈색과 같으면 된다
DP 를 통해서 풀기dp1 은 0이므로 1이 되기 위한 필요한 연산 횟수는 0dp2 는 2이므로 1이 되기 위해 필요한 연산 횟수는 1 for문에서 가장 먼저 1을 빼는 연산을 수행하는 이유어차피 나눗셈의 몫과 비교해서 더 작은 값을 취할 것이기 때문에 1을 빼는 연산
업로드중..2 x (n-1) 과 2 x (n -2) 값을 더해주면 된다n = 1일 때 2x1을 채울 수 있는 방법은 1이다.n = 2일 때 2x2를 채울 수 있는 방법은 2이다. (1x2 2개 || 2x1 2개)n = 3일 때 2x3을 채울 수 있는 방법은 3이다. (
dpi = dpi-1 + 2 \* di-2도출하기출처: https://cijbest.tistory.com/21n = 3일 때 보면 n = 2, n = 1일 때 쓴 타일이 그대로 들어 있다. 대신 같은 타일을 기준으로 앞뒤로 들어 간다. 따라서 dpi-1 + d
1일 때, 1 -> 12일 때, 1+1 | 2 -> 23일 때, 1+1+1 | 2+1 | 1+2 | 3 -> 44일 때, 1+1+1+1 | 1+2+1 | 2+1+1 | 1+1+2 | 2+2 | 3 -> 71일 때 + 2일 때 + 3일 때 = 4일 때즉, dpi = dp
각 자릿수 별로 따져 봐야 한다.dp자릿수1) dpi라 할 때 가장 뒤에 오는 숫자가 0이면, dp자릿수-1이 되어야 한다.0 앞에는 1만 올 수 있기 때문이다.따라서, j == 0일 때: dpi = dpi-12) 마찬가지로 가장 뒤에 오는 숫자 == 9이면, dp자릿
앞자리 수보다 뒷자리 수를 기준으로 잡는 게 포인트이다. 앞자리 수도 물론 규칙이 있긴 하지만 DP로 식을 세우기는 어렵다.출처: https://jainn.tistory.com/91먼저 n이 1일 때는 모두 하나의 경우의 수를 갖는다.따라서 dp = 1 \*
이렇게 했더니 Index 오류가 났다. n이 1일 때 조건을 처리해주어야 한다. DP 문제는 n이 1일 때 처리 해주는 조건을 많이 요구한다고 한다.. 참고하기1 => 110 => 1100, 101 => 21000, 1001, 1010 => 310000, 10001,
양옆에 닿아 있는 숫자는 더할 수 없고, 대각선의 숫자만을 더할 수 있다.표로 정리하면인덱스 1은 각각 대각선인 숫자를 더한다. 이후에는 대각선 누적합(k-1)과 k-2값 중 큰 수를 선택해서 더한다.for문 안에서 2줄의 점수를 입력받고, 계산을 하는 거였다.너무 어
경우의 수는 먼저 해당 포도주를 마시는 경우와 안 마시는 경우가 있다.1\. 해당 포도주를 마시는 경우 1) 그 전 포도주를 먹는 경우 2) 그 전 포도주를 먹지 않는 경우2\. 해당 포도주를 안 마시는 경우출처: https://pacific-ocean.tis
출처: https://zidarn87.tistory.com/285현재 위치(i)가 이전에 원소(j)보다 클 때, dp값에 1을 더한다.(단, 현재 위치의 dpi가 dpj보다 작을 때만 해당한다.)dp 배열에 있는 수 중 가장 큰 값(max)을 출력한다.ai a
11053과 마찬가지로 이중 반복문이 사용된다.i는 1부터 n-1까지 순회하고, j는 0부터 i-1까지 순회한다.이때 수열i와 수열j를 비교하고 수열i가 더 크면 dpi와 dpj + ai 중 더 큰 값을 넣는다.if문을 통과한 dp는 다음과 같다.1, 101, 0, 0
dp 수열은 '가장 긴 감소하는 부분 수열의 길이'를 담는다.dp 수열을 모두 1로 초기화한다. 혼자만 가능할 때는 길이가 1이 될 것이기 때문이다.이중 반복문 안에 조건식을 처리한다. 수열 a를 돌면서 자기 이전 값보다 작은지 확인한다.이전 값이 더 큰 경우 감소하는
가장 긴 증가하는 부분 수열과 가장 긴 감소하는 부분 수열을 혼합한 문제이다.증가하는 수열 1, 2, 3, 4, 5감소하는 수열 5, 2, 1이 된다. 이때 Sk 값은 5이고, 증가하는 수열과 감소하는 수열 둘 다 포함돼 2번 계산된다.따라서 마지막에 -1을 해줘야 한
연속된 숫자의 합이므로 반복문을 i-1로 한정했다.현재 값과 이전값을 더한 값 중에 더 큰 값을 dp 배열 안에 넣는다.만약 -1, -2, -3, -4, -5 처럼 더할 수록 값이 커지지 않는 경우는 따로 처리를 해줘야 한다. (문제 조건에서 반드시 하나 이상을 선택해
컴파일러에서는 오류 없이 잘 출력됐는데 백준 사이트에서는 계속 틀렸다고 떴다.게시판에 있는 모든 반례를 넣어 봐도 잘 떴다..근데 max를 써서 푸는 문제가 아니라 n-1번째에 있는 dp값을 출력해야 하나 보다.그래서 찾다가 코드를 수정했다.2156번 포도주 마시기 문
이중 반복문이 필요하다.i는 1부터 n까지, j는 1부터 i-1까지 순회한다.만약 j의 제곱이 i보다 크면 제곱수가 주어진 수보다 큰 것이기 때문에 반복을 중단한다.만약 dpi가 dpi-jxj + 1 보다 크면dpi에 dpi-jxj + 1 값을 넣어준다.1을 더하는 이
n이 홀수일 때는 타일을 채울 수 없기 때문에 경우의 수가 0이다.dpn 은 dpn-2 3 + (dp0 + dp2 + .. + dpn-4) 2 + 2(가로 길이 n일 때)로 나타낼 수 있다.기존 타일 문제보다는 더 까다로웠다. 경우의 수는 최대 3-4개까지만 하고
dpi와 dpi+1를 더한 값이 dpi+3이다.계산하는 반복문을 먼저 두고, 입출력 반복문을 아래에 둠으로써 코드 반복을 막자규칙만 찾으면 어렵지는 않은 문제였다. dpi에 대입을 하려고 하니까 잘 안 됐다. 반복문을 4로 시작하는 것이 아니라 0부터 98까지 시작하는
n이 1이면 k가 어떤 수가 오든 경우의 수는 k이다.k = 1, n = 2일 때, (1, 0), (2, 0) => 2개k = 1, n = 4일 때, (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1) => 4개k = 2일
알파벳은 26개이므로 암호 코드는 1부터 26까지 가능하다. 만약 입력 받은 숫자가 0으로 시작한다면 만들 수 없으므로 0을 출력하고 종료한다.한 자리일 때 경우의 수는 모두 1이다. (1~26사이에 있기 때문)두 자리일 때는 10~26 사이에 있을 때만 경우의 수가
답은 잘 나왔지만 점화식을 세워서 푼 게 아니었다. 틀린 문제 풀이이다.41 5 6 7 일 때,dp1은 p1 값으로 1이 들어간다.dp2는 dp1 + p1 혹은 p2 중 더 큰 값이 들어가므로 5이다.dp3는 dp1 + p2, dp2 + p1, p3 중 더 큰 값이 들
11650 좌표 정렬하기 문제와 거의 흡사하다. 이전 문제는 x좌표로 정리했다면 이번 문제는 y좌표를 기준으로 정렬하는 것이다.y좌표로 정렬하기 위해 x, y를 입력받아 ans 배열에 y, x 순으로 넣는다.정렬한 이후 출력 방식은 ansi, ansi 로 해서 각각 x
좌표를 입력받은 후 sorted 함수를 사용해서 오름차순으로 정리한다.출력 방식은 수열i, 수열j로 각각 x, y좌표를 나타낸다.sys.stdin.readline()에 대해 복습할 수 있는 문제였고 sort할 때 ed 빼먹지 말자.출력 방식도 배울 수 있었다.
나이가 같다면 입력 받은 순서 그대로 출력해야 한다.배열에 age와 name을 넣을 때 i도 같이 넣어준다.ans.append(int(age), i, name)ans.sort()혹은 람다식을 이용하는 방법도 있다.ans.append(int(age), name) ans.
1) 국어 점수 내림차순2) 영어 점수 오름차순3) 수학 점수 내림차순4) 이름 오름차순람다식을 작성할 때 내림차순은 -를 붙여주면 된다.ans.sort(key = lambda x:(-x1, x2, -x3, x0))람다식과 여러 조건, 오름/내림차순에 대해 배울 수 있
for 문에서 append를 하면 메모리 재할당이 이루어져 메모리 초과가 뜬다.따라서 입력값이 10000개가 주어질 수 있으므로 길이가 10001인 리스트를 만든다. 리스트에는 0으로 채워 놓고 입력값을 받을 때마다 해당하는 입력값에 1씩 더해준다.입력을 다 받으면 0
0으로 세팅된 리스트를 만들어 놓고 입력받은 숫자에 해당하는 곳에 1씩 더했다. 그중 가장 큰 값을 가지는 인덱스를 출력했는데 IndexError가 떴다.딕셔너리를 사용하는 문제였다.숫자를 입력받아 card에 저장한다.들어 온 값이 딕셔너리에 있으면 1을 더하고, 없으
Python3 문제 입출력 입출력 예시 나의 풀이 (시도) 주요 포인트 최종 코드 피드백
Python3 문제 입출력 입출력 예시 주요 포인트 stack이라는 빈 배열을 선언한다. method를 split해서 n개 입력받는다. 만약 mth의 첫 번째 인덱스가 push 라면, 리스트에 mth의 두 번째 인덱스를 넣는다. 만약 mth의 첫 번째 인덱
괄호를 문자열로 입력 받고 리스트에 넣어준다.여는 괄호는 +1로, 닫는 괄호는 -1로 나타낼 것이다.이를 담는 변수 vps는 반복문 안에서 0으로 초기화시킨다.이중 반복문을 사용해,i가 (일 때는 1씩 더하고 i가 )일 때는 1씩 뺀다.이때, 만약 vps가 -1이라면
( 이 들어오면 스택에 ( 를 넣는다.) 이 들어오면 스택에서 ) 를 뺀다.1) i-1이 ( 일 때, 즉 ()일 때 => 레이저 포인터스택의 길이를 구한다. 스택에 쌓인 ( 개수 == 쇠 막대기 개수2) 이전 문자도 ) 일 때 => 쇠막대기 끝ans를 1씩 증가시킨다.
Python3 문제 입출력 입출력 예시 주요 포인트 큐에 대한 기초를 다지는 문제였다. sys.stdin.readline()을 사용하지 않고 input()을 사용하면 시간초과 에러가 뜬다. push일 때, 큐에 x를 insert한다. insert(a, b)는
덱을 학습할 수 있는 문제였다.push_front 일 때, appendleft() 함수 사용push_back 일 때, append() 사용pop_front일 때, popleft() 사용pop_back일 때, pop() 사용size일 때, 덱의 길이 출력empty일 때,
ord(문자) = 숫자 << 문자를 숫자로 바꿔주는 함수ord('a') 가 97이라서 ord(i) - 97을 해서 'a'를 0으로 맞춰준다.count 함수를 사용해서 푸는 방법count 함수문자열.count(찾는 요소)ord와 count 함수에 대해 복습할
ord( )문자열을 아스키코드로 반환할 수 있는 함수이다. ord('a')=> 97ord('z')=> 122chr( )아스키코드를 문자열로 변환하는 함수이다. chr(65)=> Achr(90)=> Zfind()문자열.find(찾을 문자)문자열.find(찾을 문자, 시작
무한반복문에 try, except를 사용한다.isupper() 문자.isupper()문자가 대문자인지 판단한다. 만약 대문자라면 True 반환.islower()문자.islower()문자가 소문자인지 판단한다. 만약 소문자라면 True 반환.isdigit()문자.isdi
len 함수를 사용해 문자열의 길이를 출력한다.
업로드중..chr(97+(ord(i)+13-97)%26) 수식 풀이i를 아스키 코드로 변환 후 13을 더함.그 후, 97을 제외하고 26으로 나눴을 때 나머지를 구함.(이유 : 13을 더하다보면 아스키 코드에서 z를 넘어가게 됨. 이에, a부터 0으로 통일하기 위해 2
AB, CD를 합칠 때는 문자열로 + 해주고,덧셈이 필요할 때는 int형으로 바꾸고 + 한다.쉽게 풀 수 있는 문제였다.
문자열을 i번째부터 인덱스 끝까지 리스트에 넣는다.정렬한 뒤 알파벳 순서대로 출력한다.쉽게 풀 수 있는 문제였다.문자열 슬라이싱에 대해 학습할 수 있었다.
Python3 문제 입출력 입출력 예시 나의 풀이 (시도) 주요 포인트 시간 초과가 나지 않도록 하는 것이 중요한 문제였다. cursor라는 변수를 만들어 cursor의 위치를 저장하고, insert와 remove 함수를 사용했는데 시간 초과 에러가 났다.
업로드중..left는 남아 있는 사람들의 배열이다. 1부터 n까지 숫자를 리스트 안에 넣는다.ans는 나오는 사람, 즉 요세푸스 순열(답)이 된다.for문cnt는 left의 인덱스이다.5명이 있다고 할 때 k=3 이라면, 1,2,3,4,5 에서 결과는 <3,1,5
공백을 기준으로 숫자 a, b, c를 입력 받는다.수식을 계산하고 결과값을 출력한다.두 번째와 네 번째 식에서 괄호를 하나 빼먹어 답이 틀리게 나왔다.이런 걸로 시간 버리지 않게 잘 보자.
유클리드 호제법a & b의 최대 공약수는 b & a를 b로 나눈 나머지의 최대 공약수와 같다.단, a > b여야 a를 b로 나눈 나머지를 구할 수 있다.a, b= b, a % b = b, r= r, b % r = r, r'= r', r % r' = r',r''이 과정을
s 문자열을 그대로 뒤집으려면 s::-1을 사용한다.이렇게 해도 정답이긴 하다. 다만 반복문을 사용하지 않고도 문제를 풀 수 있다. 추가적인 변수도 필요 없다.그냥 s를 뒤집은 것과 s문자열을 비교하면 끝나는 거였다.
반복문을 n까지 반복해서 n명의 이름을 입력 받는다.이름의 첫 번째 글자를 first 리스트에 넣는다.set 함수를 사용해 first의 중복값을 제거한다.중복값이 없는 fs 리스트 내에서 반복문을 실행한다.문제의 첫 번째 입출력 예시로 설명하면,fs는 {'k', 'h'
트럭 개수에 따른 요금인 a, b, c를 입력 받는다입력으로 주어지는 시간은 1부터 100까지 이므로 arr 리스트에 100개의 0을 초기화 시킨다.반복문 (3번 반복)들어 온 시간과 나간 시간을 입력 받는다.이중 반복문들어 온 시간 ~ 나간 시간까지 arr 리스트에
파일의 개수 n을 입력받는다.패턴을 입력받는데, '\*'을 기준으로 분리한다.'\*'을 기준으로 나눠진 패턴의 길이를 length 변수에 담는다.반복문(n까지)파일을 입력 받는다.만약 length가 파일의 문자열 길이보다 길다면, NE를 출력한다.패턴의 길이가 더 길면
리스트를 사용했더니 시간 초과가 떴다.리스트는 탐색할 때 시간복잡도가 O(n)이라 index에 따라 탐색할 때 데이터 양에 따라 적합하지 않을 수도 있다.따라서 자료구조 개선이 필요하다. 파이썬 dictionary는 hash table을 사용해 시간복잡도가 O(1)이다
Python3 문제 입출력 입출력 예시 주요 포인트 괄호 문제와 비슷하게 풀 수 있는 스택 문제이다. 단어의 수 n개를 입력받는다. 반복문 (n까지) 문자열 s를 입력받는다. 스택을 선언한다. (반드시 반복문 안에서!) 이중 반복문 (s 문자열) 만약 스택
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 191 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 육각형이기 때문에 첫 번째 턴은 6 이후에, 두 번째 턴은 12(6\*2)이후에 1씩 증가한다.숫자
시간초과가 떴다. 아마 반복문을 너무 많이 써서 그런 거 같다.n은 어차피 정수만 들어오기 때문에 int를 쓰지 않아도 된다.int(stdin.readline()) 대신 stdin.readline()을 사용하면 시간이 28ms 단축된다.a는 입력받고 리스트로 처리한다.
데큐(deque)와 BFS를 활용한 문제이다.변수 answer은 가장 멀리 떨어진 노드의 개수를 나타낸다.route는 각 노드의 최단거리 리스트이다.egde를 1부터 시작하게끔 오름차순으로 정렬한다.데큐를 선언한다.graph는 연결된 노드 정보를 나타낸다.반복문 (ed
https://www.acmicpc.net/problem/4659구현특정 상황까지 입력받기모음(a,e,i,o,u) 하나를 반드시 포함하여야 한다.모음이 3개 혹은 자음이 3개 연속으로 오면 안 된다.같은 글자가 연속적으로 두 번 오면 안 되나, ee 와 oo는
https://www.acmicpc.net/problem/10709구현모든 구름은 1분이 지날 때마다 1킬로미터씩 동쪽(왼->오른)으로 이동한다지금부터 몇 분후에 처음으로 구역 (i, j) 에 구름이 뜨는지를 표시한다처음부터 구역 (i, j) 에 구름이 떠 있
https://www.acmicpc.net/problem/1193구현패턴 찾기1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 이 차례대로 1번, 2번, 3번, 4번, 5번, … 분수이다.X가 주어졌을 때, X번째 분수를 구한다x: 입력받은 x번째의 분
구현A만원의 고정 비용과 B만원의 가변 비용이 든다.노트북 가격이 C만원으로 책정되었다.생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점
https://www.acmicpc.net/problem/1547구현컵 3개는 맨 왼쪽 컵부터 순서대로 1번, 2번 3번이다.1번 컵의 아래에 공을 하나 넣는다.두 컵을 고른 다음, 그 위치를 맞바꾼다.컵의 위치를 총 M번 바꿀 것이다위치를 M번 바꾼 이후에
https://www.acmicpc.net/problem/11399구현사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다.줄을 서 있는 사람의 수 N과 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다.각 사람이 돈을 인
https://www.acmicpc.net/problem/1181구현단어 n개를 입력받는다단어는 길이가 짧은 것부터길이가 같으면 사전 순으로중복된 단어는 하나만 남기고 제거해야 한다.n: 입력받을 단어의 개수words: 입력받은 단어 리스트set_words:
https://www.acmicpc.net/problem/10814구현정렬나이와 이름이 가입한 순서대로 주어진다.회원들을 나이가 증가하는 순으로나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬n: 사람들의 수가 입력으로 주어진다lst: 사람들의 나이와
Python3 문제 키워드 구현 문제 풀이 문제 요구사항 숫자와 알파벳 소문자로 되어있는 글자를 N개 입력 받는다 단어에서 숫자를 모두 찾은 뒤, 이 숫자를 비내림차순으로 정리해야 한다. 숫자가 0으로 시작하는 경우는 정리하면서 생략할 수 있다. 숫자가 나오는 경
https://www.acmicpc.net/problem/1213구현정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.=> 문자열을 사전순으로 정렬하는 과정이 필요하다.문자열에서 두 개 이상의 홀수 알파벳이 있으면 팰린드롬을 만들지 못한다.=> 홀수
https://www.acmicpc.net/problem/16395DP정수 n과 k가 주어졌을 때 파스칼의 삼각형에 있는 n번째 행에서 k번째 수를 출력하는 프로그램N번째 행에는 N개의 수가 있다.첫 번째 행은 1이다.두 번째 행부터, 각 행의 양 끝의 값은
https://www.acmicpc.net/problem/2798브루트포스N장의 카드 중에서 3장의 카드를 고른다.플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다.첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤
https://www.acmicpc.net/problem/1966큐현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다.나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다
Python3 문제 https://www.acmicpc.net/problem/2852 키워드 구현 문제 풀이 문제 요구사항 골이 들어갈 때 마다 골이 들어간 시간과 팀을 기록한다 농구 경기는 정확히 48분동안 진행된다 각 팀이 몇 분동안 이기고 있었는지 출력하는 프
그리디스크린은 N칸으로 나누어져 있다.스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M<N)플레이어는 게임을 하는 중에 바구니를 왼쪽이나 오른쪽으로 이동할 수 있다. (경계는 넘어갈 수 x)가장 처음에 바구니는 왼쪽 M칸을 차지하고 있다.스크린의 위에서 사
https://www.acmicpc.net/problem/2869구현달팽이는 높이가 V미터인 나무 막대를 올라가야 한다.달팽이는 낮에 A미터 올라갈 수 있지만, 밤에 잠을 자는 동안 B미터 미끄러진다. (정상에 올라간 후에는 미끄러지지 않음.)달팽이가 나무 막
https://www.acmicpc.net/problem/1260그래프DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램방문할 수 있는 정점이 여러 개일 때는 정점 번호가 작은 것을 먼저 방문한다더이상 방문할 수 있는 점이 없는 경우 종료한다정점
Python3 문제 https://www.acmicpc.net/problem/2178 키워드 그래프 최단 거리 문제 풀이 문제 요구사항 (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램 1은 이동할 수 있는 칸
Python3 문제 https://www.acmicpc.net/problem/2667 키워드 그래프 Connected Component 문제 풀이 문제 요구사항 정사각형 모양의 지도 => NxN 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 연결되었다는
https://www.acmicpc.net/problem/1920이분탐색 (시간복잡도 O(logN))N개의 정수 A1, A2, …, AN이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램존재하면 1을, 존재하지 않으면 0을 출력N : (1
Python3 문제 https://www.acmicpc.net/problem/1436 키워드 브루트포스 => 브루트포스(brute: 무식한, force: 힘) 완전탐색 알고리즘. 즉, 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져온다.
Python3 문제 https://www.acmicpc.net/problem/1012 키워드 그래프 Connected Component 문제 풀이 문제 요구사항 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있다. 배추들이 모여있는 곳에는
Python3 문제 https://www.acmicpc.net/problem/7576 키워드 그래프 문제 풀이 문제 요구사항 토마토는 격자 모양 상자의 칸에 하나씩 넣어서 보관한다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들
Python3 문제 키워드 그래프 문제 풀이 문제 요구사항 공기 중에서 치즈가 모두 녹아 없어지는 데 걸리는 시간과 모두 녹기 한 시간 전에 남아있는 치즈 조각이 놓여 있는 칸의 개수를 구하는 프로그램 치즈가 없는 칸은 0, 치즈가 있는 칸은 1로 주어지며 각
Python3 문제 https://www.acmicpc.net/problem/1018 키워드 브루트포스 문제 풀이 문제 요구사항 M×N 크기의 보드 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있는 이 보드를 잘라서 8×8 크기의 체스판으로
Python3 문제 https://www.acmicpc.net/problem/1992 키워드 재귀 분할 정복 문제 풀이 문제 요구사항 흰 점을 나타내는 0과 검은 점을 나타내는 1로만 이루어진 2차원 배열 영상을 압축한다. 영상이 모두 0으로만 되어 있으면 압축
https://www.acmicpc.net/problem/2559누적합두 포인터슬라이딩 윈도우측정한 온도가 어떤 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 알아보고자 한다.연속적인 며칠 동안의 온도의 합이 가장 큰 값을 계산하
Python3 문제 로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램 https://www.acmicpc.net/problem/14503 키워드 구현 시뮬레이션 그래프 한 방울 문제 풀이 문제 요구사항 청소기는 바라보는 방향이 있으
https://www.acmicpc.net/problem/1697그래프 탐색너비 우선 탐색수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이의 위치가 X일 때, X-1 또는 X+1, 2\*X
https://www.acmicpc.net/problem/7562그래프 탐색너비 우선 탐색나이트가 최소 몇 번만에 이동할 수 있는지 출력하는 프로그램t: 테스트 케이스의 개수l: 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)x, y: 나이트가 현재 있는 칸
https://www.acmicpc.net/problem/7569그래프 탐색너비 우선 탐색익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다.하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에
Python3 문제 키워드 문제 풀이 문제 요구사항 변수 및 함수 설명 풀이 최종 코드 피드백
https://www.acmicpc.net/problem/2206그래프 탐색너비 우선 탐색N×M의 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. (1, 1)에서 (N, M)의 위치까지 최단 경로로 이동하려 한다.
Python3 문제 https://www.acmicpc.net/problem/1707 키워드 그래프 탐색 너비 우선 탐색 깊이 우선 탐색 이분 그래프 문제 풀이 문제 요구사항 그래프가 입력으로 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램
https://www.acmicpc.net/problem/2644그래프 탐색너비 우선 탐색깊이 우선 탐색여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오.(기본적으로 부모와 자식 사이를 1촌으로
https://www.acmicpc.net/problem/5014그래프 탐색너비 우선 탐색스타트링크는 총 F층으로 이루어진 고층 건물에 사무실이 있고, 스타트링크가 있는 곳의 위치는 G층이다.강호가 지금 있는 곳은 S층이고, 이제 엘리베이터를 타고 G층으로 이
https://www.acmicpc.net/problem/9205그래프 탐색너비 우선 탐색출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. (맥주 한 박스당 20개) 50미터를 가려면 그 직전에 맥주 한 병을 마셔야 한다.상근이네 집, 편의점, 펜
https://www.acmicpc.net/problem/2468그래프 탐색너비 우선 탐색브루트포스 알고리즘깊이 우선 탐색어떤 지역의 높이 정보를 파악 후, 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어지는 지를 조사하
Python3 문제 https://www.acmicpc.net/problem/2573 키워드 그래프 탐색 너비 우선 탐색 깊이 우선 탐색 문제 풀이 문제 요구사항 빙산의 각 부분별 높이 정보는 배열의 각 칸에 양의 정수로 저장된다. 빙산 이외의 바다에 해당되는
Python3 문제 https://www.acmicpc.net/problem/14890 키워드 구현 문제 풀이 문제 요구사항 크기가 N×N인 지도가 있고, 지도의 각 칸에는 그 곳의 높이가 적혀져 있다. 지도에서 지나갈 수 있는 길이 몇 개 있는지 알아보려고 한
Python3 문제 https://www.acmicpc.net/problem/14891 키워드 문제 풀이 문제 요구사항 상태는 8개의 정수로 이루어져 있고, 12시방향부터 시계방향 순서대로 주어진다. N극은 0, S극은 1로 나타나있다. 다섯째 줄에는 가 주어
Python3 문제 https://www.acmicpc.net/problem/15662 키워드 구현 시뮬레이션 문제 풀이 문제 요구사항 총 8개의 톱니를 가지고 있는 톱니바퀴 T개가 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바
https://www.acmicpc.net/problem/5568자료 구조브루트포스 알고리즘해시를 사용한 집합과 맵백트래킹카드 n(4 ≤ n ≤ 10)장을 바닥에 나란히 놓고 놀고있다. 각 카드에는 1이상 99이하의 정수가 적혀져 있다. 이 카드 중에서 k(2
https://school.programmers.co.kr/learn/courses/30/lessons/120812코딩 테스트 입문 문제 중 '최빈값 구하기'과거의 풀었던 코드이다.(+ 23/7/23)리스트를 사용해 풀었다.주의할 점은 최빈값이 몇 개나 반복되
https://school.programmers.co.kr/learn/courses/30/lessons/17682구현다트 게임은 총 3번의 기회로 구성된다.각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다.점수와 함께 Single(S), Double(D
https://www.acmicpc.net/problem/20413그리디 알고리즘MVP 등급은 브론즈(B), 실버(S), 골드(G), 플래티넘(P), 다이아몬드(D)로 총 다섯 등급이 있으며, 현재 달과 지난달, 즉 현재 달을 포함한 최근 2개월간의 과금액으로
https://www.acmicpc.net/problem/14501다이나믹 프로그래밍브루트포스 알고리즘오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다.N = 7인 상담 일정표 예시)상담을 하는데 필요한 기간은
바이러스 검사그리디총 n개의 식당에서 체온을 측정하는 검사자는 검사팀장과 검사팀원으로 나뉘어진다. 한 가게당 팀장은 오직 한 명, 팀원은 여러 명이 있을 수 있다. (하지만 가게당 팀장 한 명은 무조건 필요.) 팀장이든 팀원이든 담당한 가게에 대해서만 검사한다.n개의
외주 수익 최대화하기백트래킹n일 수익을 최대화 하려고 한다. 각 작업은 수행 완료하는데 걸리는 기한 t와 이를 완료 했을 때의 수익 p가 주어진다.두 개 이상의 작업은 동시에 수행할 수 없으며, 휴가 기간(n+1일) 이후로는 일을 할 수 없다고 할 때 외주 수익의 최대
조삼모사백트래킹n개의 일이 주어질 때 이를 아침과 저녁으로 n/2개씩 나누어 처리한다.일마다 특성이 다르기 때문에 같이할 때의 업무 강도를 나타내는 업무 간의 상성 Pij가 존재한다.아침과 저녁의 일의 힘든 정도가 너무 차이가 나면 일하기가 싫어지기 때문에, 아침의 하
메모리 초과
코드트리 불안한 무빙워크시뮬레이션무빙워크의 레일은 시계 방향으로 회전한다.무빙워크의 움직임)1번 칸부터 2n-1번 칸은 한 번 회전할 때 2n번째 칸의 위치로 이동하게 되고 2n번째 칸은 1번째 칸의 위치로 이동하게 된다.사람의 움직임)각 사람은 1번 칸에 올라서서 n
코드트리 나무타이쿤시뮬레이션dx, dyn x n 격자의 칸에 리브로수의 각자 다른 높이와 각 년도의 이동 규칙이 주어질 때, 해당 년수가 모두 지나고 난 뒤 남아있는 리브로수 높이들의 총 합을 구하는 프로그램n x n 격자에 서로 다른 높이를 가진 리브로수가 주어진다.
17404\. RGB 거리2dp규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자.1번 집의 색은 2번, N번 집의 색과 같지 않아야 한다.N번 집의 색은 N-1번, 1번 집의 색과 같지 않아야 한다.i(2 ≤ i ≤ N-1)번 집의 색은 i-1, i+1번 집
https://www.acmicpc.net/problem/11758기하학2차원 좌표 평면 위에 있는 점 3개 P1, P2, P3를 순서대로 이은 선분이 어떤 방향을 이루고 있는지 구하는 프로그램P1, P2, P3를 순서대로 이은 선분이반시계 방향을 나타내면 1
https://www.acmicpc.net/problem/12865냅색 알고리즘DPN개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고
https://www.acmicpc.net/problem/1655 자료구조 우선순위 큐
코드트리 돌아가는 팔각 의자구현시뮬레이션각 의자의 12시 방향에 앉아있는 남쪽 지방의 사람의 착석 여부를 알아내는 프로그램4개의 팔각 의자를 총 k번 회전시키려고 한다.한 번 회전할 때 45도씩 즉 한 칸을 움직이고, 회전은 시계 방향과 반시계 방향 모두 가능하다.회전
https://www.acmicpc.net/problem/23971수학사칙연산한 명씩 앉을 수 있는 테이블이 행마다 W개씩 H행에 걸쳐 있을 때, 모든 참가자는 세로로 N칸 또는 가로로 M칸 이상 비우고 앉아야 한다. 즉, 다른 모든 참가자와 세로줄 번호의 차
https://www.acmicpc.net/problem/5073수학구현기하학삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.Equilateral : 세 변의 길이가 모두 같은 경우Isosceles : 두 변의 길이만 같은 경우Sc
https://www.acmicpc.net/problem/10431구현시뮬레이션아이들은 항상 20명이며, 같은 키를 가진 학생은 한 명도 없다.줄 서는 규칙자기 앞에 자기보다 키가 큰 학생이 없다면 그냥 그 자리에 서고 차례가 끝난다.자기 앞에 자기보다 키가
https://www.acmicpc.net/problem/7568구현브루트포스N명의 몸무게와 키가 담긴 입력을 읽어서 각 사람의 덩치 등수를 계산하는 프로그램어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시한다.두 사람
https://www.acmicpc.net/problem/25757구현자료구조문자열플레이하기를 신청한 횟수 $N$과 플레이할 게임의 종류가 주어질 때, 최대 몇 번이나 게임을 플레이할 수 있는지 구하는 프로그램윷놀이 $Y$, 같은 그림 찾기 $F$, 원카드 $
https://www.acmicpc.net/problem/20125구현쿠키의 신체가 주어졌을 때 심장의 위치와 팔, 다리, 허리의 길이를 구하는 문제쿠키의 신체는 머리, 심장, 허리, 그리고 좌우 팔, 다리로 구성되어 있다.머리는 심장 바로 윗 칸에 1칸 크기
https://www.acmicpc.net/problem/1205구현새로운 점수가 랭킹 리스트에서 몇 등 하는지 구하는 프로그램랭킹 리스트에 올라 갈 수 있는 점수의 개수 P가 주어진다.리스트에 있는 점수 N개가 비오름차순으로 주어지고, 태수의 새로운 점수가
Python3 문제 https://www.acmicpc.net/problem/1244 키워드 구현 시뮬레이션 문제 풀이 문제 요구사항 학생들은 입력되는 순서대로 자기의 성별과 받은 수에 따라 스위치의 상태를 바꾸었을 때, 스위치들의 마지막 상태를 출력하는 프로그램
https://www.acmicpc.net/problem/9375수학자료 구조조합론해시를 사용한 집합과 맵가진 의상들이 주어졌을 때 과연 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 있을까?한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘
https://www.acmicpc.net/problem/1940정렬두 포인터N개의 재료와 M이 주어졌을 때 몇 개의 갑옷을 만들 수 있는지를 구하는 프로그램갑옷은 두 개의 재료로 만드는데 두 재료의 고유한 번호를 합쳐서 m이 되면 갑옷이 만들어지게 된다.N
Python3 문제 https://www.acmicpc.net/problem/1629 키워드 수학 분할 정복을 이용한 거듭제곱 문제 풀이 문제 요구사항 자연수 A를 B번 곱한 수를 C로 나눈 나머지를 구하는 프로그램 (A, B, C는 모두 2,147,483,647
https://www.acmicpc.net/problem/4375수학브루트포스 알고리즘정수론2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 각 자릿수가 모두 1로만 이루어진 n의 배수를 찾는 프로그램각 자릿수가 모두 1로만
https://www.acmicpc.net/problem/9017구현모든 선수들의 등수가 주어질 때, 우승팀을 구하는 프로그램한 팀은 여섯 명의 선수로 구성되며, 팀 점수는 상위 네 명의 주자의 점수를 합하여 계산점수는 자격을 갖춘 팀의 주자들에게만 주어지며,