전체보기
-
7. 가장 큰 수 ⁂코딩 테스트/Level 2 2020. 7. 20. 22:38
https://programmers.co.kr/learn/courses/30/lessons/42746 많은 사람들이 푼 문제입니다만.. 이 많은 사람들이 이 문제를 스스로 풀었을까? 의문이 생깁니다. 평범하지 않은 풀이에 아주 많은 정답자가 있는 걸 봐도... 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 �� programmers.co.kr 파이썬 단순하게 주어진 조건에 따라 코딩해 봅니다. def solution(numbers): numbers = list(map(str,..
-
6. 쇠막대기코딩 테스트/Level 2 2020. 7. 20. 22:12
https://programmers.co.kr/learn/courses/30/lessons/42585 코딩테스트 연습 - 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레� programmers.co.kr 파이썬 def solution(arrangement): sum, stack = 0, 0 for element in arrangement: if element == '(': # '('인 경우 stack += 1 # 막대가 하나 쌓인다. last = '(' # '('을 지나갔음을 기록해 둔다. else: # ')' 인 경우 if last == '(': # 직전 블럭이..
-
5. 프린터코딩 테스트/Level 2 2020. 7. 20. 19:47
https://programmers.co.kr/learn/courses/30/lessons/42587 파이썬(Python) 코딩량을 줄이기 위해 pop(0)을 썼는데 리스트가 길거나 빈번한 pop(0)이 필요할 땐 collections.deque를 사용하는 게 좋겠습니다. def solution(priorities, location): answer = 0 while priorities: if priorities[0] >= max(priorities): # 반복문 내의 max 함수는 속도에 영향을 많이 줍니다. answer += 1 priorities.pop(0) location -= 1 if location == -1: return answer else: priorities.append(prioritie..
-
4. 위장코딩 테스트/Level 2 2019. 11. 11. 21:10
https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 딕셔너리 (맵) 자료형을 이용해서 카운트할 수 있습니다. 파이썬 def solution(clothes): temp = {} for _, cat in clothes: if cat in temp: temp[cat] += 1 else: temp[cat] = 1 answer = 1 for each in temp.values(): answer *= each + 1 return answer - 1 딕셔너리의 setdefault를 사용하면 코드를 더 줄일 수 있습니다. def solution(clothes): temp = {} for _, cat in clot..
-
3. 탑코딩 테스트/Level 2 2019. 11. 10. 23:07
https://programmers.co.kr/learn/courses/30/lessons/42588 파이썬 제시된 조건 그대로 풀었습니다. range 함수의 사용법을 안다면 쉽게 풀 수 있습니다. def solution(heights): answer = [0] * len(heights) for i in range(len(heights) - 1, 0, -1): # for i in range(len(heights) - 1, -1, -1): for j in range(i - 1, -1, -1): if heights[i] < heights[j]: answer[i] = j + 1 break return answer 자바스크립트 일단 쉽게 처리해 보았습니다. 초기화 부분이 좀 거슬리죠? function solut..
-
2. 피보나치 수코딩 테스트/Level 2 2019. 11. 8. 23:06
https://programmers.co.kr/learn/courses/30/lessons/12945 저의 블로그에서도 다룬 적 있는 문제입니다. https://comdoc.tistory.com/entry/33-피보나치-수열과-동적-프로그래밍 파이썬 재귀의 예로 많이 사용됩니다만, 문제의 조건인 100,000은 파이썬의 재귀 한계를 넘겨 버립니다. RecursionError: maximum recursion depth exceeded in comparison 재귀를 쓰지 말고, 반복문을 사용합니다. 문제를 그대로 코딩하면 이렇습니다만.. def solution(n): f0, f1 = 0, 1 for i in range(2, n+1): f0, f1 = f1, (f1 + f0) return f1 % 1234..
-
1. 전화번호 목록코딩 테스트/Level 2 2019. 11. 8. 00:04
https://programmers.co.kr/learn/courses/30/lessons/42577 파이썬 def solution(phone_book): for num1 in phone_book: for num2 in phone_book: if num1 != num2: k = min(len(num1), len(num2)) if num1[:k] == num2[:k]: return False return True """ 효율성 테스트 테스트 1 〉통과 (0.16ms, 15.3MB) 테스트 2 〉통과 (0.15ms, 15.3MB) """ 자바 향상된 for 문을 사용하지 않고 고전적으로 ... 읽기 싫어지네요. class Solution { public boolean solution(String[] phon..
-
네이버 금융(시세)에서 주가 갈무리(크롤링)하기Python/파이썬과 주식 2019. 11. 6. 23:36
* 투자용으로 사용하지 마십시오. 네이버 금융의 개별 종목에는 시세라는 항목이 있습니다. https://finance.naver.com/item/sise.nhn?code=005930 쭉 내려보면 일별 시세라는 항목이 있습니다. ㅇㅇ 이걸 크롤링하면 되겠죠? 이 항목의 HTML을 보면 iframe로 되어 있네요. iframe의 주소는 src="/item/sise_day.nhn?code=005930" 입니다. https://finance.naver.com/item/sise_day.nhn?code=005930 즉 위 주소를 방문해보면 다음 화면을 볼 수 있는 거죠. 아래에 페이지 목록을 클릭해보면 주소가 다음과 같이 변합니다. https://finance.naver.com/item/sise_day.nhn?co..