Python/알고리즘 8

42888 오픈채팅방 / 오류 : TypeError: 'dict' object is not callable

중간에 TypeError: 'dict' object is not callable 이런 오류가 떴다 answer.append(name[rr[1]]+printer[rr[0]])를 answer.append(name[rr[1]]+printer(rr[0])) 라고 써서 발생한 오류였다. dictionary의 키를 이용해 값을 얻을 때는[ ]를 ( ) 로 실수로 쓰지 말자!!!! # 내 풀이 def solution(record): #딕셔너리에 이름 처리하기 name={} for i in range(len(record)): if record[i][0] == 'L': continue id_name = record[i].split() name[id_name[1]] = id_name[2] #answer(리스트)에 출력 메..

Python/알고리즘 2022.07.16

[프로그래머스] 60057 문자열 압축

어려웠다!!!! # 복습 1회 22-07-10 2회 3회 4회 5회 # 오답 def solution(s): res=list() for j in range(1, len(s)//2+1): cnt=1 ss="" for i in range(0,len(s)-1,j): if s[i:i+j]==s[i+j:i+2*j]: cnt+=1 else: if cnt==1: ss+=s[i:i+j] else: ss+=str(cnt)+s[i:i+j] cnt=1 if j==1: #?? ss+=s[len(s)-1] #print(ss) res.append(ss) res_cnt=list() for x in res: res_cnt.append(len(x)) #print(res) #print(min(res_cnt)) return min(res_..

Python/알고리즘 2022.07.10

[백준] 1225 이상한 곱셈

교훈 0. 너무 직관적으로 처음 생각한 풀이에서 조금 더 시간을 줄일 수 있는 풀이를 고민하기 1. 형 변환 시 (int)a가 아니라 int(a) 임!! 2. 이중for문으로 하니 오답이다 ## 시간초과 a, b = input().split() char_a = [] char_b = [] for i in a: char_a.append(int(i)) for j in b: char_b.append(int(j)) #print(char_a) #print(char_b) sum = 0 for i in char_a: for j in char_b: sum += j*i print(sum) ## 시간초과 ## 위의 것 짧게 쓴 version a, b = input().split() sum = 0 for i in a: for..

Python/알고리즘 2022.07.06

[백준] 5639 이진 검색 트리 (미완)

Node 클래스 class Node(object): def __init__(self, data): self.data = data self.left = None #왼쪽 서브노드 self.right = None #오른쪽 서브노드 tree 클래스 class BinarySearchTree(): # 생성자 def __init__(self)->None: # 검색하는 메소드 def search(self, key)->int: # 노드 추가하는 메소드 def add(self,key,value)->bool: # 노드 삭제하는 메소드 def remove(self, key)-> bool: # 노드 출력하는 메소드 def dump(self) -> None:

Python/알고리즘 2022.07.03

[python] 1699 제곱수의 합 (미해결)

https://www.acmicpc.net/problem/1699 고민: 입력한 수를 num이라 하자 sqrt(num)값이 가장 큰 제곱수일 것이다 그 수를 제외한 나머지의 sqrt()값이 가장 크다 계속 반복해서 1일 때까지 개수를 세본다 또, cnt 변수도 쓰겠다 ## 오답 # 입력, 기본 설정 import math num = int(input()) cnt = 0 tot = num # 제곱수 항의 최소 개수 구하기 while(tot!=0): #print(tot) # sqrtNum = int(math.sqrt(tot)) tot -= sqrtNum * sqrtNum cnt += 1 # 출력 print(cnt) 반례 -> 18 = 3^2+ 3^2 = 4^2 + 1^2 + 1^2 최소항의 개수는 2인데 3으..

Python/알고리즘 2022.07.03

[파이썬] 16503 괄호 없는 사칙연산

고민: 연산하는 부분을 어떻게 처리할지? 일일이 경우의 수를 나열하기에는 코드가 길다 -> calculate 함수를 이용해서 처리하였다 교훈: 1. 나눗셈 처리 "나눗셈 연산은 정수 나눗셈으로 몫만 취하며, 피연산자 중 하나가 음수이면 양수로 바꿔 계산한 결괏값에 음수를 취한다. " elif op == "/": if a * b 최대값 출력하기 # 처음 코드 if ans1 < ans2: print(ans1) print(ans2) else: print(ans2) print(ans1) # 나중 코드 print(min(ans1, ans2)) print(max(ans1, ans2)) min과 max 활용..

Python/알고리즘 2022.07.02