백준 / 1181번 / 단어 정렬 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/1181  코드 (오답)n = int(input())s = []for i in range(n): s.append(input())s.sort(key = len)for i in s: print(i) 중복된 단어는 하나만 남기고 제거한다는 조건을 보지 못하였고, input()을 사용해 속도가 느렸다. 재시도 (정답)import sysn = int(sys.stdin.readline())s = []for i in range(n): s.append(sys.stdin.readline().strip())set_s = set(s)s = list(set_s)s.sort()s.sort(key = len)for i in s: print(i..
백준 / 11718번 / 그대로 출력하기 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/11718  코드 import sysword = sys.stdin.readlines()for w in word: print(w.rstrip())readlines()를 사용해 여러 입력을 한 번에 받는다. 각 문장 마지막에 개행문자 \n이 함께 저장되므로 rstrip을 사용해 개행문자를 제거해준다.
백준 / 5622번 / 다이얼 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/5622  코드 answer = 0num = ['', '', '', 'ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']word = input()for w in word: for i, n in enumerate(num): if w in n: answer += iprint(answer)
Programmers / 3단계 / 징검다리 건너기 / python / 2019 카카오 개발자 겨울 인턴십
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/64062  코드def solution(stones, k): s = 1 e = max(stones) mid = (s + e) // 2 while s = k: e = mid -1 break else: cnt = 0 else: s = mid + 1 return s - 순차탐색으로는 효율성을 만족하기 어려우므로 이진탐색으로 답을 구해야 한다.- s는 1, e는 디딤돌의 최댓값, mid는 (s + e) //2로 설정하고, 디딤돌을 ..
Programmers / 2단계 / 방금그곡 / python / 2018 KAKAO BLIND RECRUITMENT
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/17683 코드def solution(m, musicinfos): m = m.replace('C#','c').replace('D#','d').replace('F#','f').replace('G#','g').replace('A#','a') answer = [] for music in musicinfos: s = int(music.split(',')[0].split(':')[0]) * 60 + int(music.split(',')[0].split(':')[1]) e = int(music.split(',')[1].split(':')[0]) * 60 + int(musi..
Programmers / 3단계 / 보석 쇼핑 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/67258  코드def solution(gems): size = len(set(gems)) dic = {gems[0]:1} temp = [0, len(gems) - 1] start , end = 0, 0 while(start  모든 종류의 보석을 1개 이상 포함하는 가장 짧은 구간을 구해야 하는 문제이다. 시간 복잡도를 고려해 슬라이싱 대신 투포인터와 딕셔너리를 이용하여 풀어야 한다. 처음에 포인터 start와 end를 모두 1번 진열대에 위치시키고, 보석의 종류가 모두 채워질 때까지 end를 증가시키면서 딕셔너리의 키와 값을 갱신한다. 종류가 모두 채워지면 가장 짧은 구간인..
Programmers / 2단계 / 여행 경로 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/43164  코드import collectionsdef solution(tickets): graph = collections.defaultdict(list) for a, b in sorted(tickets, key=lambda x: x[1]): graph[a].append(b) route = [] def DFS(start): while graph[start]: DFS(graph[start].pop(0)) route.append(start) DFS("ICN") return rou..
Programmers / 2단계 / 줄 서는 방법 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/12936  코드import math def solution(n, k): arr = list(range(1, n + 1)) answer = [] while arr: a = (k - 1) // math.factorial(n - 1) answer.append(arr.pop(a)) k = k % math.factorial(n - 1) n -= 1 return answer 처음에 순열을 사용하여 접근하려고 했으나 통과하지 못하여서 다른 풀이를 참고하였다.수학적으로 팩토리얼을 이용해 접근할 수 있었다. 참조h..