본문 바로가기

Algorithm problem solving/풀이16

2231. 분해합 첫 풀이 패스이지만 만족스럽지 못하다. 아무리 브루트 포스 문제라고 해도... 216의 생성자가 두자리 수 일리가 없는데, 1부터 타겟까지 돌며 찾아 나가는게 너무 아깝다.😭😩 뭔가 시작점을 효과적으로 설정할 수 있는 방법이 필요하다. def f(num): return num + sum(map(int, list(str(num)))) N = int(input()) ans = 0 for i in range(1, N+1): if f(i) == N: ans = i break print(ans) 최적화 풀이 각 자리수에 올 수 있는 최대 수는 9인 것을 생각해서, 타겟 숫자의 자리수*9를 계산해 시작점을 잡아줬다. 시작점을 잡아주지 않은 첫 풀이는 1440ms가 걸렸는데, 76ms로 줄였당 🥳 휴 속이 다 시원하.. 2022. 2. 6.
14502. 연구소 (0413) PASS from collections import deque import copy def bfs(arr): global virusInfo, maxV q = deque() for v in virusInfo: q.append(v) while q: dx = [0,1,0,-1] dy = [1,0,-1,0] si, sj = q.popleft() for k in range(4): ni = si + dx[k] nj = sj + dy[k] if 0 2020. 4. 13.
[단계별로 풀어보기] 1차원 배열_All Pass fail better 하기 위해 다시 시작하는 애증의 알고리즘 실패를 쌓아 성공으로 만들고 만다 내가💪 쉬운 것부터 차근차근 다시. 10818. 최소, 최대 n = int(input()) nums = list(map(int, input().split())) for num in nums: if num > maxx : maxx = num if num maxx: maxx = num max_idx = i print(maxx) print(max_idx) 2577. 숫자의 개수 a = 1.. 2020. 4. 2.
4836. 색칠하기 T = int(input()) for tc in range(1, T+1): n = int(input()) # 도화지 준비 paper = [[0]*10 for _ in range(10)] for _ in range(n): r1, c1, r2, c2, color = map(int,input().split()) # 주어진 모서리대로 색칠 for i in range(c1, c2+1): for j in range(r1, r2+1): paper[i][j] += color # 겹치는 부분 == 3 ( 빨강 1 + 파랑 2) purple = 0 for i in range(10): for j in range(10): if paper[i][j] == 3: purple += 1 print('#{} {}'.format(tc,.. 2020. 3. 11.
1959. 두개의 숫자열 다른 사람들 코드를 보면 주석을 쓰는 사람/안쓰는 사람이 보인다, 확실히 평소에 쓰던 사람이 필요한 부분만 쏙쏙 골라 코드 이해하기 쉽게 쓴다. 코드 공유(또는 협업)할 때 굉장히 도움이 되는 부분이라 생각해서, 주석 쓰는 습관을 들이려 노력하는 중이다. 요즘 공부하고 있는 html이나 css 코드에도 코멘트를 의식적으로 넣으려 한다. 3월 9일의 풀이 T = int(input()) for tc in range(1, T+1): n, m = map(int, input().split()) num1 = list(map(int, input().split())) num2 = list(map(int, input().split())) mul = [] # 첫번째 리스트의 크기가 더 작을 경우 if n < m : for.. 2020. 3. 9.
4835. 구간합 예전에 푼 문제를 다시 풀어봤는데, 예전에도 슬라이싱, 이번에도 슬라이싱 사용해서 풀더라ㅋㅋㅋㅋㅋ 내장 함수를 최대한 사용하지 않으려 노력해봣당. 버블 소트도 다시 써봤는데, 그냥 minmax 두고 풀어도 되겠당. 1월 29일의 풀이 T = int(input()) for tc in range(1, T+1): N, M = map(int, input().split()) nums = list(map(int, input().split())) nums_sum = [] # M만큼 구간을 잘라서 합의 리스트(nums_sum)를 구해라. for i in range(0, N-M+1): nums_sum.append(sum(nums[i:i+M])) # 합의 리스트(nums_sum)의 max와 min을 찾아서 max-min을.. 2020. 3. 9.
4828. min max 풀어봤던 문제를 버블 정렬로 다시 풀어봤다 ! 배운 거를 바로바로 활용해 보려고 + 한 문제를 다양한 방법으로 접근해보려고 노력한다. 1월 28일의 풀이 T = int(input()) for tc in range(1, T+1): N = int(input()) nums = list(map(int, input().split())) max_val = nums[0] min_val = nums[0] for i in range(1, len(nums)): if max_val nums[i]: min_val = nums[i] print('#{} {}'.format(tc, max_val-min_val)) 3월 9일 풀이_버블 정렬 사용 T = in.. 2020. 3. 9.
2798. 블랙잭_fail(3/4)_pass(4/10)_pythonic(22/2/6) 3/4_FAIL의 기록 아직 통과하지 못한 코드이다. 답은 나오는데 통과가 되질 않는다. 컴퓨터는 잘못이 없으니 내가 무엇인가를 잘못한거겠지😥 테스트 케이스가 한개밖에 공개되지 않아서 어디서 틀렸는지도 모르겠다 ㅠㅠ 아 뭐 하나만 바꾸면 될 거 같은데... 뭘 놓치고 있나 def f(n, k, m, summ): # 순열의 n번 원소 결정, 순열의 길이 k, 사용할 숫자 m개 global max_val, M if summ > M: return if n == k: if summ >= max_val: max_val = summ else: for i in range(m): if used[i]==0: # i번 원소가 사용되지 않았으면 used[i] = 1 # 사용함으로 표시 # p[n] = cards[i] f(n.. 2020. 3. 4.
[SW Expert Academy] 파이썬 기초2_객체지향 ( 6203~ 6229 ) 파이썬 기초2 마지막 부분 객체지향 IM 테스트때문에 알고리즘 문제만 미친듯이 풀다가 문법 강의 들은 덕분인가 객체지향 배우는 거 너무 재밌었다 ㅠㅠ 한달 전엔 너어무 어려웠는데 강의 듣고 푸니까 술술 풀리는 것도 너무 재밌고 한달 전 코드보다 깔끔해져서 너무 좋다 (파이참에서 코드 유독 알록달록한 것도 너무 예쁨ㅋㅋㅋㅋ큐ㅠ) 6203. 객체지향_1 class Student: def __init__(self, kor, eng, mat): self.kor = kor self.eng = eng self.mat = mat def sumScore(self): return self.kor + self.eng + self.mat kor, eng, mat = map(int, input().split(',')) s =.. 2020. 3. 1.
[SW Expert Academy] 파이썬 기초2_딕셔너리 ( 6259~ 6262 ) 딕셔너리 파트 마지막 네문제 6259. 딕셔너리_7 sentence = input() letters = 0 digit = 0 for s in sentence: if s.isdigit(): digit += 1 if s.isalpha(): letters += 1 print(f'LETTERS {letters}\nDIGITS {digit}') 6260. 딕셔너리_8 sentence = input() upper = 0 lower = 0 for s in sentence: if 65 2020. 3. 1.