
하하! Index 에러에서 벗어나지 못해서 보니 인덱스 에러는 리스트, 문자열과 같이순서가 있는 데이터 구조에서 유효한 범위를 벗어나는 인덱스에 접근하려고 할 때 발생하는 오류 라고 한다. 열을 개수를 x, 행의 개수를 y로 설정하고 입력 과정에서 x, y =
테스트 케이스가 많으므로 input()보다 빠르게 받을 수 있는sys.stdin을 사용해준다. 코드는 받은 한줄을 line에 넣고 line의 내용을 공백 기준으로 찢어 각각 넣는다. EOF 즉 Ctrl+Z를 입력받기 전까지 계속 반복한다. try-except를 이용
rstrip()은 ()안에 든 문자를 제거해준다. strip은 해석하면 조각, r은 right를 의미. 오른쪽부터 ()안에 든 문자를 제거하는데, 동일하지 않은 문자가 나올 때 까지 제거한다. 한 줄을 읽어서 line에 담고, 버퍼에서 문자열을 바로 가져오면서 같이
A+ ~ F 성적을 입력받아 학점을 추측하는 코드이다. 제로 성적과 학점을 딕셔너리에 저장하여 +/-에 따라 가점/감점을 조정하는 흐름으로 작성한다.
기본적으로 버퍼에서 받아오므로 '\n'이 함께 딸려온다 -> 때문에 반복문에서 많이 사용되어야 이점이 생긴다. sys.stdin.readlines() : 모든 입력을 한 번에 리스트 형태로 읽는다 sys.stdin.readline() : 한 줄만 읽는다 sys.s
정해진 시간보다 45분 일찍 알람을 맞추는 문제이다. 푸는 방법을 구상해보자면 입력받은 분에서 45만큼 빼고, 음수값이 되면 (분 + 60), (시 - 1) 을 해주면서 시가 음수가 되면 +24를 해준다, total 분으로 바꿔서 45만큼 빼주고 시, 분으로 나누어
문자열의 위치를 교환하는 문제이다. 파이썬은 다른 언어들과 다르게 따로 temp변수를 만들지 않아도 바로 교환이 가능하다. 파이썬의 문자열은 불변이기 때문에 특정 문자를 수정하려면 문자열 상태로는 불가능하다. -> list(input())으로 문자열을 받으면 문자열

문자열에서 키워드를 찾는 문제이다. 입력한 키워드가 문자열의 숫자를 제외했을 때 연속적으로 존재하면 1, 없다면 0을 출력한다. re의 sub함수를 이용하여 숫자를 제거한다. find로 문자열을 찾는다. 의 흐름으로 코드를 작성하면 될 것 같다. find함수는 맨앞

푼 문제수가 a, a+1, ..., b로 존재하며 푼 문제수가 K, 푼 문제수 차이가 X보다 작거나 같은 경우만 친구가 될 수 있다. 스케치하면 조건 구간이 5개로 구성된다. (K-X, K+X+1)로 for문 돌려서 i >= a and i <= b 일때만 count
입력으로 주어진 사진이 어떤 고양이의 사진인지 구분하는 문제이다. w가 존재한다면 춘배, b라면 나비, g라면 영철의 사진이다. 고양이는 무조건 한마리만 나온다는 조건이 있다. 그렇다면 쉽게 풀 수 있다. 입력이 많으므로 sys로 입력받는다. 공백으로 구분되어 주어지
주어진 N장의 카드 중 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구하는 문제이다. 뽑은 카드가 중복되지 않도록 3중 for문을 이용한다. res에는 최종합을 담고, total에는 뽑은 카드의 합을 저장한다. 조건에 부합하면 res에 total을 저장한
흔한 소수 찾기 문제이다. N개의 수 중 소수가 몇개인지 출력한다. 숫자i를 받아서 2부터 i까지의 수로 나눈다. 수가 나누어 떨어질 경우 isPrime을 0으로, 나누어 떨어지지 않는다면 isPrime은 처음 설정한 1이 된다. isPrime이 1일 경우 소수의 개
N번째 글자를 구하는 문제이다. print(ord("가"))로 유니코드에서 '가'는 44032에 할당되어있는 것을 확인할 수 있다. 따라서 1을 입력했을 때 '가'가 출력되기 위해 ch + 44031을 chr로 바꾸어 출력하면 정상적으로 숫자에 해당하는 글자가 출력된
각 자리의 알파벳끼리의 거리를 출력하는 문제이다. 'B'와 'D'의 경우 거리는 4 - 2 = 2, 'D'와 'B'의 경우 (2 + 26) - 4 = 24이다. 알파벳은 뒤로 갈수록 숫자(아스키코드)가 큰 값을 가진다. 거리는 (뒤의 문자) - (앞의 문자)로 구하
팰린드롬수는 수의 숫자들을 뒤에서부터 읽어도 같은 수이다. 입력받은 숫자n과 n을 역순으로 인덱싱한 값이 같다면 펠린드롬수라고 할 수 있다.

N개의 단어가 들어오면 1. 길이가 짧은 것부터 2. 길이가 같다면 사전 순으로 3. 중복 단어는 하나만 살리고 제거 하여 출력하는 문제이다. 입력케이스가 많으므로 sys.stdin.readline()을 사용해준다. 중복은 집합의 특성을 이용해 제거한다. 길이가 짧은
나이가 적은 순으로 출력하고, 나이가 같다면 먼저 입력한 순서대로 출력해야하는 문제이다. 딕셔너리는 순서가 없고, 같은 키에 대해 값이 덮어씌워지므로 리스트를 사용하도록 하겠다. 리스트의 요소는 입력을 나이와 이름 세트로 받으므로 튜플을 이용헤 나이와 이름을 한 세트

이항계수란 서로 다른 n개의 물건 중 k개를 뽑는 경우의 수이다. 가장 간단하게 재귀함수로 공식을 구현한 것이다.

늘 하던 최대공약수 최대공배수 구하는 방법을 사용했다. 시간초과라고 한다.. 수학공부하기 싫어서 회피했는데 직면할 때가 왔다. 시간초과를 면하기 위해서는 유클리드 호제법을 사용해야 하는듯 하다. 파이썬에서 lcd와 gcd함수를 제공한다는 것 같던데, 그냥 풀면 재

정수 A[1], A[2],...,A[N]이 주어져있을 때 이 안에 X라는 정수가 존재하는지 확인하는 프로그램을 짜는 문제이다. 일단 하던 대로 짜보았다. 엥 시간초과가 뜬다. 찾기 == 탐색 이니까 알고리즘 문제인가? 분류를 보니 이분탐색이라고 떡하니 적혀있다.

정수를 저장하는 큐를 구현해서 입력으로 주어지는 명령을 처리하는 프로그램을 작성하는 문제이다. 큐와 스택 큐는 선입 선출(FIFO), 스택은 후입선출(LIFO)의 자료구조이다.관건은 push의 경우 push X로 받기 때문에 다른 명령어들과 다르게 입력이 두개라는 것을

스택을 이용하여 풀이하는 문제다. 괄호의 모양이 바르게 구성된 올바를 문자열을 올바른 괄호 문자열(VPS)라고 부르는 데, 한쌍의 괄호로 된 문자열()을 기본 문자열 VPS, VPS인 x를 괄호 안에 넣은 (x)도 VPS, VPS인 x와 y를 접협시킨 xy도 VPS이
큐 문제이다. N장의 카드가 있는데, 제일 위에 1번, 차례대로 내려가서 N번 카드가 제일 아래 위치한다. 제일 위에있는 카드를 버리고, 그 다음 제일 위의 차드를 제일 아래에 있는 카드 밑으로 옮긴다. 이 동작을 반복하여 가장 마지막에 남는 카드를 구하는 문제이다.
N개의 숫자 카드를 가지고 있고, 정수 M개가 주어졌을 때, 이 수가 적힌 숫자 카드룰 몇개 가지고 있는지 구하는 문제이다. 이렇게 적혀 있었지만 그냥 코드를 짜보았다. 음! 역시나 시간 초과가 뜬다. 이분 탐색을 이용해보도록 하자. 그래도 엄청 걸린다...

MxN크기의 보드를 8x8크기의 체스판으로 만들려고한다. 체스판은 흰색과 검은색이 번갈아서 칠해져야하며, 변을 공유하는 두개의 사각형은 다른 색으로 칠해져 있어야 한다. 체스판을 색칠하는 경우는 맨 왼쪽 위칸이 흰색인 / 검은색인 경우이다. 다시 칠해야하는 정사각형의
1부터 N까지 N명의 사람이 원을 이루어 앉아있고, 순서대로 K번째 사람을 제거한다. 제거되는 사람을 순열에 저장해서 출력하는 문제이다. deque에 대한 것을 구글링하다가 rotate라는 함수를 봤었어서, 이 문제를 딱 읽자마자 rotate가 생갔났다. 1\. deq
N개의 수를 받아서 산술평균, 중앙값, 최빈값, 범위를 출력한다. 산술평균은 소수점 이하 첫째 자리에서 반올림하므로 round로 반올림해준다. 숫자 개수를 2로 나누어 중앙 위치의 값(중앙값)을 구한다.최댓값과 최소값을 찾아 범위를 구한다. 최빈값의 경우 여러개가 있다
pop이랑 push를 써서 수열을 만들어라는 알겠는데 모르겠어서 차근차근 정리해보았다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주
큐를 이용해서 1\. Queue의 가장 앞에 있는 문서의 중요도 확인2\. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치. 그렇지 않다면 바로 인쇄의 조건에 따른다.처음엔 인덱스로 찾으려

실버3에 랭크된 것을 보니 평범한 소수 구하기는 아닐 것 같아서 알고리즘 분류를 확인해 보았다.에라토스테네스의 체라고 적혀있다.임의의 자연수 n에 대해 그 이하의 소수를 모두 찾는 방법이다. 1, 2/3/5/7/11..로 나누다보면 소수만 남는다.n의 제곱근( $$\\
문제의 난이도를 결정하는 문제다. 조건은1\. 아무 의견도 없다면 난이도는 02\. 의견이 하나 이상 있다면 모든 사람의 의견을 정렬하여 가장 높은 쪽과 가장 낮은쪽의 각 30%는 반영하지 않는다. 30%의 인원을 구할때는 반올림한다. 의견 개수와 난이도 의견을 받는

조건은 이렇다.난 FizzBuzz라는게 뭔지 잘 이해가 안가서 아래로 내려보니 힌트가 있다. $i$ = 1, ..., 20까지 출력을 했을 때 위와 같은 결과가 나온다고 한다. 369와 비슷한듯 다르게 3과5의 배수, 3의 배수, 5의 배수일 때 숫자가 아니라 Fiz

숫자 n이 주어질 때 최소 몇개의 방을 지나서 가는지 계산하는 프로그램을 작성하는 문제이다. 무슨 그림이 주어지길래 막막했는데 째려보다 보니까 줄마다2~7 6개8~19 12개20~37 18개38~61 24개...의 방개수를 가지고, 6의 배수로 방개수가 늘어나는 규칙을

기본적인 방법으로 풀이하니 메모리 초과가 뜬다. 입력 시간을 덜 잡아먹을 수 있는 readline을 쓰고 리스트 압축 사용했다. 메모리 초과 뜬다. 딕셔너리로 해볼까? 딕셔너리는 순서가 없는것 때문에 힘들 듯 하다. 어디서 메모리가 많이 소비되는 것인지 모르겠
입력받은 키와 몸무게를 비교하여 덩치에 대한 등수를 매기는 문제이다. 덩치가 각각 A(x, y), B(p, q)라고 할 때, x > p, y > q라면 A > B라고 확신할 수 있다.하지만 x > p, y < q또는 x < p, y > q인 경우는 덩치를 확
N개의 이름을 입력받고 M개의 숫자 또는 이름을 입력받아 짝인 것을 출력하는 문제다. 리스트로 N개의 이름을 입력받고 q-1번째의 값을 출력하거나 index로 q+1의 값을 출력하려 했다. 딕셔너리를 하나만 쓰는 방법도 있을까(v로 k찾기) 했는데복잡할 것 같아서 리스
a층의 b호에 살기 위해서 (a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야한다는 규칙이있다. 아파트는 0층부터 존재하며 각 층은 1호부터 있고, 0층의 i호에는 i명이 산다. 문제에 따르면 0층 | 1 2 3 4 ... i 1층 | 1 3
동전을 적절히 사용하여 가치의 합을 K로 만들 때, 필요한 동전 개수의 최솟값을 구하는 코드를 짜는 문제이다. 알고리즘 분류는 그리디 알고리즘이라고 한다. 항상 최적의 결과를 도출하는 것은 아니지만 어느 정도 최적의 해에 근사한 값을 빠르게 구할 수 있다.
N번째 피보나치를 구하는 코드에서 0과 1이 몇 번 출력되는지 구하는 프로그램을 작성하라고 한다. 아는게 많이 없어서 그런가 시한 제한이 있는 문제는 감이 잘 오지 않는다. count0, count1를 전역변수로 선언하여 카운팅한다. fibo함수에서는 n이 0, 1이면 count0, count1을 증가시키고 0, 1리턴한다. 이외의 숫자라면 다음 계산을 ...
사탕가게에 설탕을 정확하게 Nkg 배달해야한다. 설탕은 3kg봉지와 5kg봉지가 존재하며, 최대한 적은 봉지를 가지고 배달을 간다. Nkg 배달할 경우 봉지 몇 개를 가지고 가면 되는가?(정확하게 만들 수 없는 경우 -1을 출력한다) 가 문제이다. 먼저 5로 나누고 나머지를 3으로 나누게끔 코드를 짰다. 6kg같은 경우 5로 나누게되면 나머지가 1로 실...