프로그래머스/이분탐색/입국심사 https://programmers.co.kr/learn/courses/30/lessons/43238 def solution(n, times): answer = 0 left = min(times) right = max(times) * n while left = n: break if checked >= n: answer = mid right = mid - 1 elif checked < n: left = mid + 1 return answer algorithm/python 2022.06.30
프로그래머스/스택,큐/다리를 지나는 트럭 https://programmers.co.kr/learn/courses/30/lessons/42583 문제 조건 +) 문제에 빠져있는 조건이 있어 계속 틀렸다. "트럭은 1초 다리 1칸씩 전진한다"는 조건을 추가해야 한다. from collections import deque def solution(bridge_length, weight, truck_weights): answer = 0 truck_weights = deque(truck_weights) inBridge = deque([0]*bridge_length) weight_sum = 0 while truck_weights or sum(inBridge) > 0: answer += 1 getOut = inBridge.popleft() weight_sum.. algorithm/python 2022.06.21
프로그래머스/스택,큐/기능 개발 https://programmers.co.kr/learn/courses/30/lessons/42586 def solution(progresses, speeds): answer = [] progresses.reverse() speeds.reverse() # progresses 자체를 stack으로 본다. sec = 0 temp_ans = 0 while progresses: if progresses[-1] + speeds[-1] * sec >= 100: progresses.pop() speeds.pop() temp_ans += 1 else: if temp_ans != 0: answer.append(temp_ans) temp_ans = 0 sec += 1 answer.append(temp_ans) return.. algorithm/python 2022.06.20
프로그래머스/스택,큐/프린터 https://programmers.co.kr/learn/courses/30/lessons/42587?language=python3 - 1차 풀이 (flag 사용) from collections import deque def solution(priorities, location): answer = [] stack = deque([i for i in range(0, len(priorities))]) priorities = deque(priorities) while priorities: flag = 0 for priority in priorities: if priority > priorities[0]: flag = 1 break else: priorities.popleft() answer.append(sta.. algorithm/python 2022.06.20
프로그래머스/스택,큐/주식 가격 https://programmers.co.kr/learn/courses/30/lessons/42584 ## use deque from collections import deque def solution(prices): answer = [] prices = deque(prices) sec = 0 while prices: sec = 0 p = prices.popleft() for price in prices: sec += 1 if price < p: break; answer.append(sec) return answer ## use stack def solution(prices): answer = [0] * len(prices) stack = [] # index가 들어갈 stack for i, price i.. algorithm/python 2022.06.14
[python] 최대 int 범위 Python 2: sys 패키지에서 max값을 제공한다. sys.maxint로 정수 최대값을 구할 수 있다. 이 최대값을 초과할 시 int->long으로 자동전환 된다. Python 3: python3에서 int와 long의 구분이 없어져 int은 unbound다. 만약 word size를 구하고 싶다면 sys.maxsize를 사용한다. PEP 237: Essentially, long renamed to int. That is, there is only one built-in integral type, named int; but it behaves mostly like the old long type. 결론: Python에서 int의 범위는 고려할 필요가 없다. 출처: https://stackoverfl.. algorithm/python 2022.03.27
codility/lesson5/prefix sums/passingCars https://app.codility.com/programmers/lessons/5-prefix_sums/passing_cars/ 코딜리티는 (1) 시간제한이 있어 늦장부리지 않고 풀 수 있어 좋다. (2) 테스트케이스도 정확도, 성능측정으로 분리되어 있으며 (3) 화면녹화도 제공하고 (4) 내 소스 시간복잡도도 계산해 주고 (5) 문제도 영어라 가끔 영어문제를 내는 큰 회사들 대비하기 좋다. 나는 성능이 구린 풀이를 잘 하기 때문에 코딜리티로 점검해 보았다. 곧이곧대로 풀지말고 그 안의 룰을 찾아내자 def solution(A): west_sum = 0 len_A = len(A) cnt_one = sum(A) for i in range(len_A): if A[i] == 0: west_sum += cnt.. algorithm/python 2022.02.14
백준/2108/통계학 시간초과로 여러번 통과하지 못했던 문제이다. 로직이 맞는 것 같은데 시간초과 뜬다면 input() 을 의심해보아야 한다. 몇 번의 input을 더 받아야하는지 알고 있다면 (대부분의 문제의 첫 값은 for문 돌아야 할 횟수를 알려준다) 다음을 활용하도록 하자. input() -> sys.stdin.readline() 풀이) #!/usr/bin/env python # -*- coding: utf-8 -*- import sys def main(n, input_num): # 산술평균 : N개의 수들의 합을 N으로 나눈 값 print(int(round(sum(input_num) / n))) # 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 sorted_num = sorted(in.. algorithm/python 2021.10.27
hackerrank/Data Structures/Arrays/Sparse Arrays https://www.hackerrank.com/challenges/sparse-arrays/problem?h_r=next-challenge&h_v=zen #!/bin/python3 import math import os import random import re import sys def matchingStrings(strings, queries): s_dict = {} ans = [] for s in strings: if s_dict.get(s): s_dict[s] = s_dict[s] + 1 else: s_dict[s] = 1 for q in queries: ans.append(s_dict.get(q, 0)) return ans if __name__ == '__main__': fptr = open(.. algorithm/python 2021.07.25
hackerrank/Data Structures/Arrays/Dynamic Array https://www.hackerrank.com/challenges/dynamic-array/problem 식도 다 세워준 문제인데 지문 이해가 좀 어려웠다. input을 아래와 같이 이해하면 쉽게 해결된다. 2 5 // n q 1 0 5 // query_type x y 1 1 7 1 0 3 2 1 0 2 1 1 lastAnswer를 print하는데에 for문 안에서 그때그때 하는 것이 아니라 main 로직에서 return 된 result를 string으로 mapping 시킨 후 print 해주기에 나는 lastAnswer를 list에 담아 반환해주면 된다. 2차원 배열을 이해하는 문제이다. #!/bin/python3 import math import os import random import re im.. algorithm/python 2021.07.18
카카오블라인드/2020/가사검색 프로그래머스 이용 : https://programmers.co.kr/learn/courses/30/lessons/60060 처음에 for문 2개로 풀었더니 효율성 1,2,3번을 통과하지 못한다. 하위 소스가 그 내용이다. def solution(words, queries): result = [] """ queries 총 문자 개수, 맞춰야하는 문자 개수 맞으면 ans += 1 """ for q in queries: ans = 0 total_len = len(q) key = q.replace("?","") key_idx = q.find(key) for word in words: if len(word) != total_len: continue if key == "": ans+=1 continue idx = .. algorithm/python 2020.07.27
프로그래머스/DFS,BFS/타겟 넘버 https://programmers.co.kr/learn/courses/30/lessons/43165 level1 def solution(numbers, target): answer = 0 def dfs(idx=0): if idx < len(numbers): numbers[idx] *= 1 dfs(idx+1) numbers[idx] *= -1 dfs(idx+1) elif sum(numbers) == target: nonlocal answer answer += 1 dfs() return answer algorithm/python 2020.03.18
프로그래머스/탐욕법/체육복 https://programmers.co.kr/learn/courses/30/lessons/42862 level1 def solution(n, lost, reserve): answer = 0 for i in range(1, n+1): if i in lost and i in reserve: lost.remove(i) reserve.remove(i) for i in range(1, n+1): if i not in lost: answer += 1 else: if i in reserve: answer +=1 reserve.remove(i) continue elif i-1 in reserve: answer += 1 reserve.remove(i-1) continue elif i+1 in reserve: answe.. algorithm/python 2020.03.16
hackerrank/Stacks and Queues/Balanced Brackets https://www.hackerrank.com/interview/interview-preparation-kit/stacks-queues/challenges level2 #!/bin/python3 import math import os import random import re import sys # Complete the isBalanced function below. def isBalanced(s): front = ["{", "[", "("] end = ["}", "]", ")"] dict = { front[0] : end[0], front[1] : end[1], front[2] : end[2], } stack = [] for item in s: if len(stack) == 0: stack.appe.. algorithm/python 2020.03.09
hackerrank/Hash Tables/Ransom Note https://www.hackerrank.com/interview/interview-preparation-kit/dictionaries-hashmaps/challenges level1 #!/bin/python3 import math import os import random import re import sys # Complete the checkMagazine function below. def checkMagazine(magazine, note): dict = {} for item in magazine: if item not in dict: dict[item] = 1 else: dict[item] += 1 for n in note: if n not in dict: return "No" else: di.. algorithm/python 2020.03.09