일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 라이브템플릿
- Greedy
- algorithm
- java
- 2018 KAKAO BLIND RECRUITMENT
- Dijkstra
- 파이썬
- 문자열
- springboot
- HTTP
- javascript
- 최단경로
- API
- 코딩테스트
- codility
- spring security
- applicationeventpublisher
- 백준
- 탐욕법
- 알고리즘
- BFS
- Python
- 프로그래머스
- Spring
- beandefinitionstoreexception
- counting elements
- error
- 소수
- 2981
- brute force
- Today
- Total
목록파이썬 (21)
Altiora Petamus
Reference 프로그래머스 문제 풀이 제시된 규칙에 맞게 단계별로 풀어나가면 된다. 처음 생각난 것은 정규식을 활용하여 푸는 방법이지만 정규식은 왠지 사용하려고하면 기억이 나질 않는다(...) 기본 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. ⇒ lower() 를 사용하면 간단 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. ⇒ isalnum() 과 활용 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. ⇒ 반복문을 돌면서 '..' 를 '.' 으로 replace new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. new_id가 빈 문자열이라면, new_id에 "a" 를 ..
Reference 백준 10250번 문제풀이 처음 문제로 보이는 그림을 보면 2차원 배열을 사용해서 푸는걸까라는 생각이 들기 쉽다. 물론 2차원 배열로도 풀 수 있지만, 훨씬 쉬운 방법을 통해 풀 수 있다. 문제를 잘 읽어보면 6층 호텔의 10번째 손님은 4층의 객실에 배정된다. 만약 14번째 손님이라면? 2층에 배정된다. 즉 N / H 의 나머지값이 배정받을 객실의 층 수가 된다. 비슷한 로직으로 객실의 번호는 몫 + 1이 된다. 그렇다면 나머지가 0일 경우엔 어떻게 해야할까? 6번째 손님의 경우 601호에 배정되야 하지만, 나머지가 0이므로 층수를 알 수가 없어진다. 12번째 손님도 마찬가지이다. 나머지가 0일 경우 호텔의 층 수가 배정받을 객실의 층 수가 된다. 객실 번호는 몫이 된다. T = in..
Reference 백준 2869번 문제 풀이 이 문제를 푸는데 있어 중요한 키워드는 다음과 같다. 매일 올라가고 (+) 미끄러지고 (-) 목표 높이까지 (조건문 and 반복문) 이 점에 착안하여 현재 위치를 저장할 변수와 날짜를 카운트할 변수를 선언, 초기화해주고 최종적으로 카운트를 출력해주면 해결할 수 있다. A, B, V = map(int, input().split(" ")) position = 0 dayCount = 0 while position = V: break position -= B print(dayCount) 하지만 이런 단순한 풀이로는 시간복잡도를 통과할 수 없다. 언제나 그렇듯... 예제 입력 100 99..
Reference 백준 1193번 문제풀이 대각방향으로 1, 2, 3, 4, 5개만큼 새로운 분수가 생성된다 ⇒ 14는 10과 15의 사이에 있으므로 14번째 분수는 5열 중 어느 한 곳에 있다. 홀짝을 사용하여 차례를 알 수 있다. 5열은 홀수번째이며, 분모가 1부터 시작해서 1씩 증가한다. 분자는 반대. 위 내용을 코드로 작성한다면 아래와 같이 작성할 수 있다. X = int(input()) totalLine = 0 temp = 0 while X > totalLine: temp += 1 totalLine += temp a = 1 b = temp n = totalLine - X if b % 2 != 0: print(f'{a + n}/{b - n}') else: print(f'{b - n}/{a + n}..
재귀함수 테스트를 하고 있던 와중 몰랐던 사항을 알게 되어 정리해둔다. result = 1 i = 1 def multifly(result): if i == 10: return result i += 1 result *= i return multifly(result) print(multifly(result)) 위의 코드를 실행시키면 문제없이 실행될 것 같지만 다음과 같은 에러를 만나게 된다 UnboundLocalError: local variable 'i' referenced before assignment 변수를 할당하기 전에 로컬변수를 참조하고 있어서 발생하는 에러인데, 나는 상단에 이미 i 로 값을 할당해주었는데 이게 무슨 소리일까? 이유는 다음과 같다. 파이썬의 모든 변수는 지역변수로 설정되기 때문에..
백준 4796번 문제 등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다. 캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다. 강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까? 강산이는 조금 더 일반화해서 문제를 풀려고 한다. 캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 < L < P < V) 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 ..
백준 1339번 문제 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다. 예를 들어, GCF + ACDEB를 계산한다고 할 때, A = 9, B = 4, C = 8, D = 6, E = 5, F = 3, G = 7로 결정한다면, 두 수의 합은 99437이 되어서 최대가 될 것이다. N개의 단어가 주어졌을 때, 그 수의 합을 최대로 만드는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10..
백준 2217번 문제 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다. 입력 첫째 줄에 정수 N이 주어진다. 다음 N개의 줄에는 각..