나는 매개변수로 받은 x를 인덱스로 접근하기 위해문자열로 바꿔서 자릿 수를 분리한 뒤, 다시 int형으로 바꿔서 더하도록 구현함.해답을 보니 while문을 통해 자릿 수를 나누어 구함.입력 값이 몇 자릿 수인지 모르니까 나누는 방법은 사용 못할 거라고 생각했는데, 높은
자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하세요. 만약 20이 입력되면 1부터 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다.제한시간은 1초입니다.<내 답안>출력은 잘 되는데 계속 시간 초과가
N개의 문자열 데이터를 입력받아 앞에서 읽을 때나 뒤에서 읽을 때나 같은 경우(회문 문자열)이면 YES를 출력하고 회문 문자열이 아니면 NO를 출력하는 프로그램을 작성한다.단 회문을 검사할 때 대소문자를 구분하지 않습니다.읽자마자 아스키코드가 떠올랐다.<내 답안>
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 규칙(1) 같은 눈이 3개가 나오면 10,000원+(같은 눈)1,000원의 상금을 받게 된다. 규칙(2) 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은
<내 답안>두 개 리스트를 합치고 sort()를 이용하면 돼서 너무 간단하길래 sort()를 이용하는게 아닌가..? 싶었다.역시나 아니였다. sort()는 nlogn번 인데 n번만으로 더 효율적으로 코드를 작성할 수 있다.<모범답안>길이가 더 작은 리스트까지
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다.만약 “t0e0a1c2h0er”에서 숫자만 추출하면 0, 0, 1, 2, 0이고 이것을 자연수를 만들면 120이 됩니다
카드 역배치뒤집은 소수도 그렇고.. 뒤집는게 나오는 문제는 왜이리 머리가 멈출까.. 이 문제도 검색의 힘을 좀 빌렸다..ㅋ나온 김에 뒤집기, 거꾸로 출력하기 방법을 정리해놓으려 한다.반복문으로 문자열 뒤집기리스트 reverse 함수(문자열에는 reverse 함수 존재
N개의 수로 된 수열 A1, A2, …, AN 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 Ai+Ai+1+…+Aj-1+Aj가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오.<내 답안>내가 푼 방식은 i와 j를 중첩 반복 시키면서 기준값을 정하고,
N\*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 출력합니다.<내 답안1>해설 듣다가 깨달은건데 행, 열, 대각선 각각에 max 변수가 필요 없었다. 어차피 최대값을 구하는 거니까 변수 max1 하나만 사용하면 된거였다.
지도 정보가 N\*N 격자판에 주어집니다. 각 격자에는 그 지역의 높이가 쓰여있습니다. 각 격자판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역입니다. 봉우리 지역이 몇 개 있는 지 알아내는 프로그램을 작성하세요. 격자의 가장자리는 0으로 초기화 되었다고
현수의 농장은 N\*N 격자판으로 이루어져 있으며, 각 격자안에는 한 그루의 사과나무가 심어저 있다. N의 크기는 항상 홀수이다. 가을이 되어 사과를 수확해야 하는데 현수는 격자판안의 사과를 수확할 때 다이아몬드 모양의 격자판만 수확하고 나머지 격자안의 사과는 새들을
현수는 곳감을 만들기 위해 감을 깍아 마당에 말리고 있습니다. 현수의 마당은 N\*N 격자판으로 이루어져 있으며, 현수는 각 격자단위로 말리는 감의 수를 정합니다. 그런데 해의 위치에 따라 특정위치의 감은 잘 마르지 않습니다. 그래서 현수는 격자의 행을 기준으로 왼쪽,
스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 위 그림은 스도쿠를 정확하게 푼 경우이다. 각 행에 1부터 9까지의 숫자가 중복
1부터 9까지의 자연수로 채워진 7\*7 격자판이 주어지면 격자판 위에서 가로방향 또는 세로방향으로 길이 5자리 회문수가 몇 개 있는지 구하는 프로그램을 작성하세요.회문수란 121과 같이 앞에서부터 읽으나 뒤에서부터 읽으나 같은 수를 말합니다.<내 답안>인덱스를
임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요. 단 중복값은 존재하지 않습니다.이분탐색을 몰라서 우선 인덱스 하
엘리트 학원은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 선생님은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개
지니레코드에서는 불세출의 가수 조영필의 라이브 동영상을 DVD로 만들어 판매하려 한다. DVD에는 총 N개의 곡이 들어가는데, DVD에 녹화할 때에는 라이브에서의 순서가 그대로 유지되어야 한다. 순서가 바뀌는 것을 우리의 가수 조영필씨가 매우 싫어한다. 즉, 1번 노래
N개의 마구간이 수직선상에 있습니다. 각 마구간은 x1, x2, x3, ......, xN의 좌표를 가지며, 마구간간에 좌표가 중복되는 일은 없습니다. 현수는 C마리의 말을 가지고 있는데, 이 말들은 서로 가까이 있는 것을 좋아하지 않습니다. 각 마구간에는 한 마리의
한 개의 회의실이 있는데 이를 사용하고자 하는 n개의 회의들에 대하여 회의실 사용표를 만들려고 한다. 각 회의에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간
현수는 씨름 감독입니다. 현수는 씨름 선수를 선발공고를 냈고, N명의 지원자가 지원을 했습니다. 현수는 각 지원자의 키와 몸무게 정보를 알고 있습니다. 현수는 씨름 선수 선발 원칙을 다음과 같이 정했습니다. “다른 모든 지원자와 일대일 비교하여 키와 몸무게 중 적어도
유럽에서 가장 유명했던 유람선 타이타닉이 침몰하고 있습니다. 유람선에는 N명의 승객이 타고 있습니다. 구명보트를 타고 탈출해야 하는데 타이타닉에 있는 구명보트는 2명 이하로만 탈 수 있으며, 보트 한 개에 탈 수 있는 총 무게도 M kg 이하로 제한되어 있습니다.N명의
1부터 N까지의 모든 자연수로 구성된 길이 N의 수열이 주어집니다. 이 수열의 왼쪽 맨 끝 숫자 또는 오른쪽 맨 끝 숫자 중 하나를 가져와 나열하여 가장 긴 증가수열을 만듭니다. 이때 수열에서 가져온 숫자(왼쪽 맨 끝 또는 오른쪽 맨 끝)는 그 수열에서 제거됩니다.예를
1부터 n까지의 수를 한 번씩만 사용하여 이루어진 수열이 있을 때, 1부터 n까지 각각의 수 앞에 놓여 있는 자신보다 큰 수들의 개수를 수열로 표현한 것을 역수열이라 한다. 예를 들어 다음과 같은 수열의 경우 4 8 6 2 5 1 3 71앞에 놓인 1보다 큰 수는 4,
선생님은 현수에게 숫자 하나를 주고, 해당 숫자의 자릿수들 중 m개의 숫자를 제거하여 가장 큰 수를 만들라고 했습니다. 여러분이 현수를 도와주세요.(단 숫자의 순서는 유지해야 합니다) 만약 5276823 이 주어지고 3개의 자릿수를 제거한다면 7823이 가장 큰 숫자가
자료구조에서 배웠던 괄호검사가 생각나서 스택을 사용하여 구현해야겠다고 생각했다.<내 답안>'('가 나오면 무조건 스택에 넣고, ')'가 나오면 바로 전 자료가 무엇인지 확인하고 '('면 레이저이기 때문에 pop 시켜서 스택에서 빼고 조각(cnt)를 증가시켰다. '
중위표기식이 입력되면 후위표기식으로 변환하는 프로그램을 작성하세요.중위표기식은 우리가 흔히 쓰은 표현식입니다. 즉 3+5 와 같이 연산자가 피연산자 사이에 있으면 중위표기식입니다. 후위표기식은 35+ 와 같이 연산자가 피연산자 뒤에 있는 표기식입니다. 예를 들어 중위표
문자열(s) -> 사전 순으로 정렬하는 유용한 방법을 알았다.문자열은 sort 함수가 없어서 s.sort()는 불가능하다. s1 = sorted(s) 는 가능하다. 하지만 sorted의 return type은 list이다.''.join을 사용하면 리스트를 하나로 이어진
시간 초과가 뜬다.. A, B가 10,000 자리를 넘지 않는다는 조건이 있고, 내가 작성한 코드는 가장 오래 걸리는 경우 100,000,000 이다. 그럼 O(N^2) 이라서 될 줄 알았는데.. 찾아보니 파이썬이 느린 편이라 예측을 벗어나 시간 내에 안 돌아가는 경우
BFS 알고리즘을 이해하기 전에 먼저, 그래프 자료구조를 이해해야 한다.하나의 노드에서 시작해서 다른 노드들을 방문하는 것그래프는 노드와 간선으로 표현된다.두 노드가 연결되어 있다면, 두 노드는 인접해 있다라고 말한다.루트 노드 : 부모 노드가 없는 최상위 노드단말 노
BFS(너비 우선 탐색) 알고리즘그래프 전체를 탐색하는 방법 중 특히 "깊이"를 우선적으로 탐색스택 자료구조를 이용하는 알고리즘이므로 실제 구현할 때 재귀 함수를 활용하면 간결한 코드가 가능하다.주로 경우의 수를 알고 싶을 때 사용탐색 시작 노드를 스택에 삽입 후 방문
> replace 함수 문자열을 변경하는 함수로, 문자열 안에서 특정 문자를 새로운 문자로 변경하는 기능 문자열.replace(old, new, [count]) 형식으로 사용 - old : 현재 문자열에서 변경할 문자 - new : old와 바꿀 새로운 문자 - cou
가변 객체는 집합의 항목이 될 수 없다.{} 를 사용한다.중복이 없다.순서가 없다.빈 집합을 만들 때는 set() 함수를 사용한다.for문을 쓰지 않고도 풀 수 있다. 집합(set)을 사용해서 중복을 제거하면 된다.
한 번 계산된 문제는 다시 계산하지 않도록 한다.사용 조건큰 문제를 작은 문제로 나눌 수 있다.작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다.대표적인 예시 : 피보나치 수열피보나치 수열의 재귀적 풀이는 O(2^n)이고, 단순 반복 풀이는 O(N) 이
다이나믹 프로그래밍에는 재귀방식과 반복문 방식이 있다.< DP 반복문 이용 >f(n) = f(n-1) + f(n-2) 개념을 적용하여,💡 '피보나치 n에서 0과 1의 호출 횟수 = (피보나치 n-1에서 0과 1의 호출 횟수) + (피보나치 n-2에서 0과 1의
정수 X가 주어질 때 정수 X에 사용할 수 있는 연산은 다음과 같이 4가지이다.X가 5로 나누어떨어지면, 5로 나눈다.X가 3으로 나누어떨어지면, 3으로 나눈다.X가 2로 나누어떨어지면, 2로 나눈다.X에서 1을 뺀다.정수 X가 주어졌을 때, 연산 4개를 적절히 사용해
인자로 받은 반복 가능한 자료형(iterable)중 단 하나라도 참이 있으면 참을 반환반복 가능한 자료형: 리스트, 튜플, 집합, 딕셔너리, 문자열 ...(for문에서 사용 가능한 것들)인자로 받은 반복 가능한 자료형(iterable)의 모든 요소가 참이면 참을 반환순
다이나믹 프로그래밍 보텀업 방식 이용적은 금액부터 큰 금액까지 확인하면서 차례대로 만들 수 있는 최소한의 화폐 개수를 d에 저장해둔다.aᵢ₋ₖ (= 금액 (i-k)원을 만들 수 있는 최소한의 화폐 개수) 가 존재하는 경우점화식 : aᵢ = min(aᵢ, aᵢ₋ₖ + 1
현수는 1년 과정의 수업계획을 짜야 합니다. 수업중에는 필수과목이 있습니다. 이 필수과목은 반드시 이수해야 하며, 그 순서도 정해져 있습니다.만약 총 과목이 A, B, C, D, E, F, G가 있고, 여기서 필수과목이 CBA로 주어지면 필수과목은 C, B, A과목이며
키(Key)에 데이터(Value)를 저장하는 데이터 구조Key를 통해 데이터를 바로 받아옴 -> 속도 빠름파이썬 딕셔너리(Dictionary) 타입 사용현수는 영어로 시는 쓰는 것을 좋아합니다.현수는 시를 쓰기 전에 시에 쓰일 단어를 미리 노트에 적어둡니다. 이번에는
n(호)가 최대 14호까지 조건이 되어있길래 이중 리스트로 한 층당 14호까지 인덱스를 만들어야 하나.. 고민했다.예를 들어 apart = \[\[1층 1~14호], \[2층 1~14호], ..., \[?층 1~14호]] 처럼 말이다.그런데 어차피 k와 n을 입력받으면
x라는 key에 대응되는 value 값을 돌려준다.
list 안의 값 중 숫자는 물론이고 문자도 정렬 가능하다.lst에 문자열이 여러개 들어있을 때,lst.sort() 라고 하면 문자로 정렬해주고lst.sort(key = len) 라고 하면 문자의 길이로 정렬해준다.
최댓값과 최솟값을 빠르게 찾기 위해 고안된 자료구조이다.heapq 모듈은 이진트리 기반의 최소 힙 자료구조를 제공한다.각 노드의 키 값이 그 자식노드의 키 값보다 작지 않은 힙heapq 모듈은 최소 힙 기능만을 동작하기 때문에 최대 힙으로 사용하려면 약간 변형해야 한다
int(string, base)파이썬 내장함수매개변수로 숫자 두 개 입력 받아서 몫과 나머지를 튜플 형태로 반환⚠ 당연히, 두번째 인자에 0을 집어 넣으면 에러 발생(ZeroDivisionError: integer division or modulo by zero)
''.join(리스트)매개변수로 들어온 \['a', 'b', 'c'] 이런 식의 리스트를 abc의 문자열로 합쳐서 반환한다.'구분자'.join(리스트)리스트의 값과 값 사이에 '구분자'에 들어온 구분자를 넣어서 하나의 문자열로 합친다.'/'.join(\['a', 'b'
자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램을 작성하세요.
\-> 프로그램 종료집합에서 부분집합을 구하면 나머지 원소들도 그들만의 부분집합이 된다.따라서 합이 같아야 하므로 집합 전체 합 - 부분집합의 합 이 나머지 부분집합의 합이 될 것이다. (주의 : sum == total//2 는 안된다. total이 홀수이면 성립하지
조건문을 명확하게 걸지 않아서 에러났다.')' 하고 ']' 조건문에서 pop을 할 때, else문에서는 pop을 하면 안되는데 if문에서 pop하고 조건 성립 안 하면 else로 간다. 이때도 pop이 이미 된 상태라 에러가 난 것이다.<다시 풀기>성공성공
replace 함수 쓰면 편할 것을.. 왜 생각 못하고 다 풀어쓴거지..replace 쓴 코드와 메모리/시간 면에서 차이는 없지만 아무래도 replace 함수를 썼다면 훨씬 간결하게 코드를 작성할 수 있다.해당하는 부분을 . 으로 대체했으므로 마지막에 그냥 len(st
위 함수는 에러가 난다.에러를 보면 if cnt==5: 문이 잘못되었다는 것을 알 수 있다.if \_\_name\_\_ == '\_\_main\_\_': 내에서 cnt=5 라고 전역변수를 잘 선언했고, 그걸 DFS2에서 쓰는게 아닌가? 싶었는데.. 에러 내용은 "cnt
철수는 그의 바둑이들을 데리고 시장에 가려고 한다. 그런데 그의 트럭은 C킬로그램 넘게 태울수가 없다. 철수는 C를 넘지 않으면서 그의 바둑이들을 가장 무겁게 태우고 싶다.N마리의 바둑이와 각 바둑이의 무게 W가 주어지면, 철수가 트럭에 태울 수 있는 가장 무거운 무게
push는 반드시 오름차순이여야 하므로, while 문을 통해 오름차순을 지키며 push를 한다. 오름차순으로 push가 끝나면 stack이 비워질 때까지 pop을 하게 된다.만약, stack의 제일 상단이 x가 아니라면 수열대로 pop이 될 수 없으므로 m을 Fals
res 는 m 만큼 만들었기 때문에 동적이여서 if L == m: 문에서 for 문으로 m 길이만큼 res 출력해야 한다.
i + i의 각 자리수의 합 을 구해야 한다. 🚩 i의 각 자리수의 합을 구하는 부분 n = 100 일 때, lst = list(map(int, str(i))) 결과는 \[1]\[2]\[3]\[4]\[5]\[6]\[7]\[8]\[9]\[1, 0]\[1, 1]\[1
오름차순으로 하면, 1+1+1+1... = 15 로 동전의 개수 15개까지 깊이탐색이 이루어져야 하지만내림차순으로 정렬하면, 5+5+5 = 15 로 동전의 개수 3개를 먼저 구할 수 있다.동전의 개수가 최소일 때를 구해야 하니 내림차순으로 정렬하는 것이 효율적이다.
b 리스트를 구하는 것이 관건이다.조합(combination)을 응용하여 b 리스트를 만들어야 한다.DFS 함수 내에서는 중복을 체크하기 위해 ch 리스트를 사용하여 현재 사용한 i 값에 1을 넣었다.그리고 좀 헷갈린 부분.. pL 이여야 하는데 pi로 써서 틀렸었다.
호제법 : 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘최대 공약수 : 2개의 자연수 a, b 에 대해서 a를 b로 나눈 나머지를 r 이라고 하면(단, a>b), a와 b의 최대 공약수는 b와 r의 최대 공약수와 같다.이 성질에 따라, b를 r로
start를 기준으로, 노드를 하나씩 거쳐갈수록 촌수가 1씩 늘어난다. 따라서 촌수를 나타내는 리스트 result를 만들고, result\[i] = result\[d] + 1 를 통해 d의 촌수에 1씩 더한다.BFS를 사용하여 deque를 이용하였다.
⭐ 조합 구하기에서 응용되어 문제가 많이 출제되므로 중요한 부분 !! 처음에 위처럼 풀었는데 몇 군데에서 wrong 이 떴다.DFS(L+1, s+i)가 잘못되었는데, 가지에 +1을 해야했다.이렇게!!만약 s가 2이면 가지는 2, 3, 4 만 올 수 있다. 1은 오지 못
DFS 함수 밖에서,새로운 단지가 나올 때마다 DFS가 호출되어야 한다.따라서 n\*n 을 전부 돌면서 새로운 단지가 시작되는 좌표가 나오면 DFS를 호출하고, 그 시작 좌표에서 깊이 우선 탐색을 통해 연결된 단지 내의 모든 집을 들러야 한다. (이때 1단지, 2단지,
전에 풀었던 <단지번호붙이기> 문제처럼 생각하면 안된다.<단지번호붙이기> 문제는 한 단지가 시작되는 집에 좌표가 찍히면, 그 집에 연결된 다른 집들을 파고 들어야 했다. 즉, DFS 였다!하지만 이 <양> 문제는 울타리 내의 모든 좌표를 다 돌아야 한다
위의 주석에 달은 것처럼,s+1 로 했던 것을 i+1로 바꿔보니 성공했다. 왜????중복 값이 res에 저장되고 조합이 구해지지 않아서 저 부분 문제라고 생각하여 바꿔봤는데.. 왜 i+1인지 이유는 모르겠다..🎈이유 알아보기!!트리로 알아보면,
세로 n, 가로 m 크기의 이중 리스트를 만든다.(.로 만들기)입력받은 좌표에 따라 해당 행열에 3. 인접 행열 방식으로 그룹마다 음식물 크기 구한다. (BFS 사용)최종적으로 제일 큰 max를 구한다.x와 y 방향이 아직 살짝 헷갈리지만.. 풀어ㄸㅏ!
!! b-> a를 단일 연결 !!한 컴퓨터에서 신뢰하는 컴퓨터를 이어가므로 BFS..(?)\[\[], \[], \[], ...] 으로 현재 신뢰 관계 리스트 형태로 만들기시작 노드부터 더이상 관계가 없을 때까지 내려가며 각 컴퓨터마다 개수 +1, 방문처리가장 많은 컴퓨
m\*n의 이차원 배열을 만든다. (전부 0으로)입력받은 좌표 범위만큼을 전부 직사각형을 표시한다. (1로 표시)0인 부분으로 BFS 를 하여, 한 칸에 해당할 때마다 +1을 하여 한 영역의 넓이를 구한다.최종적으로 분리된 영역이 몇 개인지 구한다.처음에 방향 좌표 사
입력받은 n, m으로 이차원배열 만든다. 그래프 하나씩 돌면서 BFS 를 실행한다.실행할 때마다 한 영역이 시작되는 것이므로 최종 영역이 몇 개인지 나타내는 변수 count를 +1 한다.BFS 안에서는 한 조각(?)마다 cnt를 +1 하여 한 영역 안에 조각이 몇 개
⭐ 방문 체크를 풀어줘야 되돌아간 후 다시 사용 가능결과결과
a, b, c 세 가지 물병으로 주고 받을 수 있는 경우의 수 구하기x -> yx -> zy -> xy -> zz -> xz -> y모든 경우의 수를 전부 찾는 완전탐색이다.BFS를 사용한다.water 을 구하는 방법은 x -> y의 min(x, b-y)로 예를 들어보
방법1) 부분집합 방법2) 조합
부분집합과 조합의 차이가 약간 헷갈리지만.. 아래 코드를 보면 둘은 큰 차이가 없다. 조합이 for i in range(s, n+1): 이렇게 가지를 뻗어나가는 코드가 있다는 것?! 정도의 차이이다.그래프를 실제 그려보니 조합과 부분집합이 조금은 구분이 된다.
s가 최소가 되려면, a배열에서 가장 작은수와 b배열에서 가장 큰 수를 곱해야 한다.위의 코드는 max와 min 함수를 이용해서 풀었다.혹은b배열은 정렬하면 안되므로 a배열만 정렬해서 풀 수도 있다.
돈을 가장 적게 쓰기! 기타줄이 남더라도 6개 패키지를 사는 것이 낱개보다 싸다면 6개 패키지를 택해야 한다.가격이 낮은 브랜드를 찾는다.패키지와 낱개로 나누어 리스트를 만든 후, 오름차순으로 정렬한다.그러면 패키지 리스트와 낱개 리스트의 인덱스 0번은 가장 싼 물건
Counter 함수는 처음 사용해보았다.name을 'ABACABA'라고 입력받고, Counter함수를 사용하면 check 값은 아래처럼 나온다.name 안에 있는 문자들의 각 개수를 구해주는 것이다.Counter({}) 처럼, 안에 딕셔너리 형태를 띈다. check를
최대 수익을 얻기달걀의 총 개수인 n개를 초과하여 팔 수는 없음각 고객들의 최대 가격을 p_list에 담는다.이를 오름차순 정렬한다. 그래야 첫번째 고객의 가격을 기준으로 할 때, 나머지 고객들은 당연히 첫번째 고객의 가격보다 크므로 기준을 잡을 수 있다.for문을 돌
0->1 혹은 1->0이 되는 반환점을 기록한다!!!
<첫번째 시도>백준에 나와있는 입력값 전부 맞게 나오고.. 서치해서 찾아본 반례들도 제대로 나오는데 뭐가 문제일까 싶었다.7787 일 경우, 7787 -> 8687 -> 9677 로 총 2번 매수해야 한다.💥반례) 하지만 2번 매수할 필요가 없다. 최소로 매수해
start가 테이프를 붙이기 시작하는 위치이고, start + (l-1) 까지는 테이프가 붙여지게 된다.따라서 for문을 돌 때, position에 포함되어 있는 숫자 중 start ~ start + (l-1) 사이의 숫자는 무시해도 된다. 이미 수리가 되었기 때문!
ex) 55+10+20-50+40-80마이너스로 분류하여 입력 받는다. '55+10+20', '50+40', '80'첫 번째 인덱스는 무조건 플러스로 이루어져 있으므로, for문을 통해 첫 번째 인덱스 안의 55, 10, 20 을 s에 저장한다. (s는 85가 됨)두
뻗어나가는 가지를 3개로 (저울의 왼쪽(+), 저울의 오른쪽(-), 추 사용X) 나누는 아이디어를 떠올리는 것이 관건인 것 같다.
<DFS로 풀기><DP로 풀기>
방법 1)L~R 까지 for문을 돌면서 각 숫자에서 '8'을 세어주기시간초과방법2)인덱스 0부터 '8'이 연속으로 나오는 부분을 제외하고 나머지 자릿수로 L-R을 한 후, '8' 찾기찾은 '8'의 개수+인덱스 0부터 '8'이 연속으로 나온 개수시간초과방법3)L과 R의
<내 코드>3\. 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환 에서 막혔다. 다양한 방법으로 시도했는데 잘 안돼서 찾아보니 너무 간단해서 현ㅌㅏ..3번 이외에도 전부 간단한 풀이가 많았다. 내가 너무 어렵게 푼 듯..나는 answer을 정확하
주어진 동전을 A, B, C 세 사람에게 나누는 것.몇 개씩 나눌지는 정해지지 않았기 때문에 D() 안에는 동전 금액이 들어가야 하고 가지치기를 사람 수 만큼 가지를 쳐야 한다.만약 3개씩 나눈다! 라고 정해졌다면 D(0)~D(2)까지로 D() 안에 동전 금액이 아닌
가지 = 1~26 (A~Z) 노드 - 입력 리스트의 인덱스code.insert(n, -1) 이유 : elif i>=10 and code\[L] == i//10 and code\[L+1] == i%10: 문장에서 만약 마지막 인덱스의 값이 1이나 2인 경우, code\[
최상단 노드는 S부터 시작한다.한 노드 당 간선은 +1, -1, +5 이렇게 세 갈래로 뻗는다.3개의 간선을 돌면서 계산된 새로운 노드를 큐에 담는다.이미 방문했거나 계산된 노드가 범위를 넘는다면 큐에 담지 않는다.<처음 풀이>exit code 1 이 났고.. 입
상하좌우 방향을 이용하여 마름모 형태로 방문하는 방법.문제를 기준으로 설명해보자면,L = 0 일 때는 노드 하나가 있다. -> (n//2, n//2)L = 1 일 때는 (n//2, n//2) 노드에서 4개(상하좌우)로 파생된 노드 4개가 있다. -> (n//2 -1,
입력받은 n에서 마지막 숫자 2개는 00으로 바꿨다.xx00가 f로 나눠질 때까지 1씩 증가된다. 이후에 맨 뒤 두 자리만 출력한다.더 간결한 코드가 가능하다. 문자열로 받고 문자열 슬라이싱을 이용하면 된다.마지막은 tmp를 먼저 str로 바꾼 후 슬라이싱을 이용했다.
입력값이 위처럼 공백 없이 들어올 때, 이렇게 출력하고 싶었는데 이러한 형태로 나와서 에러가 떴다. 위처럼 코드를 짰었는데, split()은 문자열을 일정한 규칙으로 잘라서 리스트로 만들어주는 함수 이다. 나는 int형의 입력값을 나누려고 하므로 split()을