티스토리

SBOX
검색하기

블로그 홈

SBOX

sbox.tistory.com/m

Learning by doing

구독자
0
방명록 방문하기
반응형

주요 글 목록

  • [파이썬][프로그래머스] 깊이/너비 우선 탐색(DFS/BFS) 타겟 넘버 def solution(numbers, target): temp = [] tempList = [] for n in numbers: if len(temp) == 0: temp.append(+n) temp.append(-n) else: for t in temp: tempList.append(t+n) tempList.append(t-n) temp = list(tempList) tempList = [] answer = temp.count(target) return answer 공감수 0 댓글수 0 2023. 1. 11.
  • [파이썬][프로그래머스] 동적계획법(Dynamic Programming) 정수 삼각형 def solution(triangle): answer = 0 reversed(triangle) temp = [] for i in range(len(triangle)-1, -1, -1): # temp 값 더한후 if temp != []: t = sumT(triangle[i], temp) else: t = triangle[i] # 원소가 2개 이상이라면 temp 값 구하기 if len(t) != 1: maxT = findMax(t) # temp가 있으면 에 최대 값 저장 temp = maxT # 만약 1개면 리턴 if len(t) == 1: return answer + t[0] return answer def sumT(t, temp): answer = [] for i in range(len(t)): ans.. 공감수 0 댓글수 0 2023. 1. 3.
  • [파이썬][프로그래머스] 탐욕법(Greedy) 구명보트 from collections import deque def solution(people, limit): answer = 0 people.sort(reverse=True) people = deque(people) while len(people) > 1: bigP = people.popleft() smallP = people.pop() if bigP + smallP 공감수 0 댓글수 0 2022. 12. 19.
  • [파이썬][프로그래머스] 탐욕법(Greedy) 체육복 def solution(n, lost, reserve): haveTrainning = [] lost.sort() reserve.sort() # 여유분이 있지만 잃어버린 학생 temp = [] for i in lost: if i in reserve: temp.append(i) for i in temp: lost.pop(lost.index(i)) reserve.pop(reserve.index(i)) for i in range(1, n+1): if i not in lost: haveTrainning.append(i) for i in lost: if (i-1) in reserve: reserve.pop(reserve.index(i-1)) haveTrainning.append(i) else: if (i+1) in.. 공감수 0 댓글수 0 2022. 12. 2.
  • [파이썬][프로그래머스] 완전탐색 피로도 from itertools import permutations def solution(k, dungeons): answer = -1 dungeonsList = list(permutations(dungeons, len(dungeons))) maxResult = 0 for dungeonList in dungeonsList: useFatigue = 0 Result = 0 for dungeon in dungeonList: if (k-useFatigue-dungeon[0]) >= 0: useFatigue += dungeon[1] Result += 1 if maxResult 공감수 0 댓글수 0 2022. 11. 29.
  • [파이썬][프로그래머스] 완전탐색 카펫 def solution(brown, yellow): answer = [] # 가로 * 세로 = brown + yellow areas = findRowCol(brown + yellow) # (가로 + 세로) * 2 - 4 = brown for area in areas: if ((area[0] + area[1]) * 2 - 4) == brown: return area return answer def findRowCol(data): answer = [] for i in range(data//2 + 1): if i in (0, 1, 2): pass else: if data % i == 0: if i 공감수 0 댓글수 0 2022. 11. 28.
  • [파이썬][프로그래머스] 완전탐색 소수찾기 from itertools import permutations def solution(numbers): answer = 0 answer_list = {} checkList = [] for i in range(len(numbers) + 1): test = list(permutations(numbers, i)) for j in range(len(test)): temp = list(test[j]) temp1 = ''.join(i for i in temp) if temp1 != '': if int(temp1) != 0: answer_list[int(temp1)] = int(temp1) checkList = answer_list.keys() answer = checkPrime(checkList) return an.. 공감수 0 댓글수 0 2022. 11. 27.
  • [파이썬][프로그래머스] 완전탐색 모의고사 def solution(answers): one_answer = [1,2,3,4,5] two_answer = [2,1,2,3,2,4,2,5] three_answer = [3,3,1,1,2,2,4,4,5,5] one_coin = 0 two_coin = 0 three_coin = 0 # one one_count = 0 for answer in answers: if answer == one_answer[one_count % len(one_answer)]: one_coin += 1 one_count += 1 # two two_count = 0 for answer in answers: if answer == two_answer[two_count % len(two_answer)]: two_coin += 1 two_.. 공감수 0 댓글수 0 2022. 11. 25.
  • [파이썬][프로그래머스] 완전탐색 최소직사각형 def solution(sizes): answer = 0 max_w = 0 max_h = 0 # for 문 왼쪽 오른쪽중 큰쪽 따로 작은쪽 따로해서 2분류된곳중 가장 큰 값을 곱해준다 for size in sizes: if size[0] max_w: max_w = max_size if min_size > max_h: max_h = min_size answer = max_w * max_h return answer 공감수 0 댓글수 0 2022. 11. 24.
  • [파이썬][프로그래머스] 정렬 H-Index def solution(citations): answer = 0 for i in range(max(citations)+1): count = 0 for j in range(len(citations)): if i = i: answer = i return answer 공감수 0 댓글수 0 2022. 11. 23.
  • [파이썬][프로그래머스] 정렬 K번째수 def solution(array, commands): answer = [] for command in commands: temp = sorted(array[command[0]-1:command[1]]) answer.append(temp[command[2]-1]) return answer 공감수 0 댓글수 0 2022. 11. 22.
  • [파이썬][프로그래머스] 힙(Heap) 이중우선순위큐 from heapq import heappush, heappop, nlargest def solution(operations): answer = [] for operation in operations: standard, queue = operation.split(' ') if standard == 'I': heappush(answer, int(queue)) else: if len(answer) == 0: pass elif len(answer) == 1: heappop(answer) else: if queue == '-1': heappop(answer) else: temp = [] count = len(answer) for i in range(count-1): heappush(temp, heappop(an.. 공감수 0 댓글수 0 2022. 11. 21.
  • [파이썬][프로그래머스] Lv. 1 폰켓몬 def solution(nums): answer = min(len(set(nums)), len(nums)//2) return answer 공감수 0 댓글수 0 2022. 10. 2.
  • [파이썬][프로그래머스] Lv. 1 완주하지 못한 선수 def solution(participant, completion): answer = '' participant_list = hash(participant) completion_list = hash(completion) for i in participant_list.keys(): if i in completion_list.keys(): if participant_list[i] != completion_list[i]: return i else: return i return answer def hash(data): answer = {} for i in data: if i in answer.keys(): answer[i] += 1 else: answer[i] = 1 return answer 공감수 0 댓글수 0 2022. 10. 2.
  • [파이썬][프로그래머스] Lv. 2 k진수에서 소수 개수 구하기 import math def solution(n, k): answer = 0 # 진수 변환 ginsu = change_ginsu(n, k) # 0기준 split ginsu_list = ginsu.split('0') # 리스트 소수 카운트 for i in ginsu_list: if i != '' and i != '1': answer += primenumber(int(i)) return answer def primenumber(number): for i in range(2, int(math.sqrt(number)+1)): if number%i == 0: return 0 return 1 def change_ginsu(n, k): answer = '' while n//k > 0: # 나머지 값 추가 answer.. 공감수 0 댓글수 0 2022. 9. 6.
  • [파이썬][프로그래머스] Lv. 2 [3차] 압축 def solution(msg): answer = [] # index temp 파일 생성 index_list = { "A":1, "B":2, "C":3, "D":4, "E":5, "F":6, "G":7, "H":8, "I":9, "J":10, "K":11, "L":12, "M":13, "N":14, "O":15, "P":16, "Q":17, "R":18, "S":19, "T":20, "U":21, "V":22, "W":23, "X":24, "Y":25, "Z":26 } while len(msg) != 0: # 최대 w 찾기 w = '' temp = 0 for i in range(len(msg)): if msg[0:i+1] in index_list.keys(): w_index = index_list[msg.. 공감수 0 댓글수 0 2022. 9. 2.
  • [파이썬][프로그래머스] Lv. 2 [1차] 캐시 from collections import deque def solution(cacheSize, cities): answer = 0 cache = deque([]) for i in cities: i = i.lower() # 캐시안에 도시가 있을 때 if i in cache: # 시간 계산 answer += 1 # 최신 캐시사용 갱신 cache.remove(i) cache.append(i) # 캐시안에 도시가 없을 때 else: # 시간 계산 answer += 5 # 캐시 크기 0 일때 if cacheSize == 0: continue # 캐시가 비어있을때 if len(cache) < cacheSize: cache.append(i) else: cache.popleft() cache.append(i) ret.. 공감수 0 댓글수 0 2022. 8. 28.
  • [파이썬][프로그래머스] Lv. 2 튜플 import re def solution(s): answer = [] count = {} # 숫자면 카운트 temp = '' s = s.split(',') # 숫자만 for i in s: i = re.sub(r'[^0-9]', '', i) if i in count.keys(): count[i] += 1 else: count[i] = 1 # 딕셔너리 전환 count_list = {} for key, value in count.items(): count_list[value] = key # 결과값 for i in range(len(count_list), 0, -1): answer.append(int(count_list[i])) return answer 공감수 0 댓글수 0 2022. 7. 20.
  • [파이썬][프로그래머스] Lv. 2 [1차] 뉴스 클러스터링 from collections import Counter def solution(str1, str2): answer = 0 # 소문자화 str1 = str1.lower() str2 = str2.lower() str1_set2 = setString2(str1) str2_set2 = setString2(str2) similer_score = similer_count(str1_set2, str2_set2) if len(str1_set2) > 0 or len(str2_set2) > 0: zakad = (similer_score /(sum_count(str1_set2, str2_set2))) * 65536 else: return 65536 # 내림 return int(zakad) # 합집합 def sum_coun.. 공감수 0 댓글수 0 2022. 7. 12.
  • [파이썬][프로그래머스] Lv. 2 괄호 변환 def solution(p): answer = process(p) return answer def process(p): answer = '' # 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. if p == '': return answer # 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. u, v = splitUV(p) # 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. if isCorrectStr(u): # 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. answer += u + process(v) # 4. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. else: # 4-1. 빈 문자열.. 공감수 0 댓글수 0 2022. 7. 9.
  • [파이썬][프로그래머스] Lv. 1 [1차] 비밀지도 def solution(n, arr1, arr2): answer = [] # 이진수 해독 pw_arr1 = password(n, arr1) pw_arr2 = password(n, arr2) # 공백 찾기 answer = load(pw_arr1, pw_arr2, n) return answer def load(pw_arr1, pw_arr2, n): answer = [] for i in range(n): temp = "" for j in range(n): if (pw_arr1[i][j] == "#") | (pw_arr2[i][j] == "#"): temp += "#" else: temp += " " answer.append(temp) return answer # 패스워드 이진수 해독 def password(n.. 공감수 0 댓글수 0 2022. 6. 22.
  • [파이썬][프로그래머스] Lv. 1 실패율 def solution(N, stages): result = {} denominator = len(stages) for stage in range(1, N+1): if denominator != 0: count = stages.count(stage) result[stage] = count / denominator denominator -= count else: result[stage] = 0 return sorted(result, key=lambda x : result[x], reverse=True) 공감수 0 댓글수 0 2022. 6. 21.
  • [파이썬][프로그래머스] Lv. 1 크레인 인형뽑기 게임 def solution(board, moves): answer = 0 picklist = [0] for i in moves: # 위에서부터 확인 for j in range(len(board)): if board[j][i-1] != 0: # boom: pop, count+2 if picklist[-1] == board[j][i-1]: picklist.pop() board[j][i-1] = 0 answer += 2 break # 리스트 추가 else: picklist.append(board[j][i-1]) # 삭제 board[j][i-1] = 0 break return answer 공감수 0 댓글수 0 2022. 6. 21.
  • [파이썬][프로그래머스] Lv. 1 키패드 누르기 def solution(numbers, hand): answer = '' # L_point : *, R_point:# 초기값 세팅 L_hand = '*' R_hand = '#' # 위치 찍기 temp = { '1':[0,0], '2':[1,0], '3':[2,0], '4':[0,1], '5':[1,1], '6':[2,1], '7':[0,2], '8':[1,2], '9':[2,2], '0':[1,3], '*':[0,3], '#':[2,3], } for i in numbers: # 147 이면 L if i in [1,4,7]: answer += 'L' # L의 현재위치 업데이트 L_hand = str(i) # 369 이면 R elif i in [3,6,9]: answer += 'R' # R의 현재위치 업데이.. 공감수 0 댓글수 0 2022. 6. 21.
  • [파이썬][프로그래머스] Lv. 1 숫자 문자열과 영단어 def solution(s): answer = '' data = {'zero':'0','one':'1','two':'2','three':'3','four':'4','five':'5','six':'6','seven':'7','eight':'8','nine':'9'} # 1글자씩 뽑아서 number = '' for i in s: # 숫자면 대답에 +, if i in ('1','2','3','4','5','6','7','8','9','0'): answer += i # 영어면 number에 추가해서 단어가 만들어지는 확인 else: number += i # 확인되면 숫자로 바꾸고 대답에 + if number in data: answer += data[number] number = '' # 대답을 숫자로 바꿔줌 .. 공감수 0 댓글수 0 2022. 6. 21.
  • [파이썬][프로그래머스] Lv. 1 신규 아이디 추천 def solution(new_id): # 3가지 규칙에 위배 되면 role 함수 호출 후 리턴값 리턴 if (len(new_id) 15): return role(new_id) tmp = '' for i in range(len(new_id)): # .나오면 if new_id[i] == '.': # .이 이어지면 if tmp == '.': return role(new_id) # 앞뒤로 . if (new_id[0] == '.') | (new_id[-1] == '.'): return role(new_id) # 특수문자 if new_id[i] in ("ASDFGHJKLZXCVBNMQWERTYUIOP~!@#$%^&*()=+[{]}:?,/"): return role(new_id) # .이 이어지는지 확인 tmp =.. 공감수 0 댓글수 0 2022. 6. 21.
  • [파이썬][프로그래머스] Lv. 1 신고 결과 받기 def solution(id_list, report, k): answer = [0] * len(id_list) reports = {x : 0 for x in id_list} # 정지 수 for r in set(report): reports[r.split()[1]] += 1 # 신고 수 for r in set(report): if reports[r.split()[1]] >= k: answer[id_list.index(r.split()[0])] += 1 return answer 공감수 0 댓글수 0 2022. 6. 21.
  • [파이썬] [SWEA] 5789. 현주의 상자 바꾸기 swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWYygN36Qn8DFAVm SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com T = int(input()) for tc in range(1, T+1): N, Q = map(int, input().split()) result = [0] * N for i in range(1,Q+1): L, R = map(int, input().split()) for j in range(L-1, R): result[j] = i print("#{}".format(tc),end=' ') for i in range.. 공감수 0 댓글수 0 2021. 2. 25.
  • [파이썬] [SWEA] 1860. 진기의 최고급 붕어빵 T = int(input()) def bread_count(N,M,K,tc): cycle_time = list(map(int, input().split())) cycle_time = sorted(cycle_time, reverse=True) bread_cnt = 0 # 남은 빵 개수 time = 0 # 현재 시간 cnt = 0 # 온 사람 카운트 while cnt != N: # work 시간이 되면 뿡어빵 생성 time += M bread_cnt += K # 손님이 오면 빵이 줄어든다 for i in range(N): if cycle_time[i] < M: return 'Impossible' if time 공감수 0 댓글수 0 2021. 2. 25.
  • [파이썬] [SWEA] 1974. 스도쿠 검증 swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Psz16AYEDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com T = int(input()) def check(arr): # 가로 확인 for i in range(9): check = [] for j in range(9): if check: if arr[i][j] in check: return '0' check.append(arr[i][j]) # 세로 확인 for i in range(9): check = [] for j in range(9): if check: if arr[.. 공감수 0 댓글수 0 2021. 2. 25.
    반응형
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.