STUDY 526

[백준] 1339 단어 수학

N = int(input()) words = dict() for _ in range(N): word = input() len_word=len(word)# 가중치를 자리수로 두기 위한 값 for char in word:# ex) 'ABC' = 'A'=100, 'B'= 10 'C' =1 if not char in words: words[char] = 0 words[char] += 10**(len_word - 1) len_word -= 1 words=sorted(words.items(),key=lambda x: x[1], reverse=True)# 가중치를 값으로 정렬, 내림차순 result = 0 for i in range(len(words)):# 가중치가 가장 큰 값부터 차례대로 곱해서 더함 result ..

STUDY/Algorithm 2021.01.30

[백준] 1065 한수

# 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. # 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. def ishansu(str_number): # 한, 두자리 수인 경우 무조건 등차수열 if len(str_number)== 1 or len(str_number)==2: return True # 세자리 수인 경우 tmp = [] for ch in str_number: tmp.append(int(ch)) if (tmp[0]-tmp[1]) == (tmp[1]-tmp[2]):# 각 자리가 등차수열? return True else: return False N = int(input()) result = 0 for i in range(1, N+1): if ishansu(s..

STUDY/Algorithm 2021.01.30

[백준] 1316. 그룹 단어 체커

n = int(input()) result=0 for case in range(n): word = input() chk_char = '' for ch in word: if ch not in chk_char: # chk에 없으면 추가 chk_char += ch else: # 있는경우에는 if ch != chk_char[-1]: # 이전값이랑 비교해서 다르면 멈춤 break else:# 문제 없이 끝나면 +1 result += 1 print(result) 타인의 코드를 보고 내 방식대로 작성한 알고리즘. 큰 틀은 바뀌지 않아서 내 코드는 아니다. 코드를 보고 느낀것은 정확하게 동작하는 알고리즘을 먼저 작성하는것이 가장 중요한것 같다. 답이 안나오면 어차피 틀리니까... 코드길이를 줄이던지 실행시간을 줄이는 ..

STUDY/Algorithm 2021.01.29

[프로그래머스] LEVEL2 짝지어 제거하기, python3, 2017 팁스타운

def solution(s): if len(s) % 2: #홀수 경우는 불가능 return 0 list_s = list(s) stack = [] for i in range(len(s)): tmp = list_s.pop() if stack == []: stack.append(tmp) elif stack[-1] == tmp: stack.pop() elif stack[-1] != tmp: stack.append(tmp) if stack != []: return 0 return 1 위 코드는 타인의 코드를 보고 생각해보며 내 방식대로 적은 코드이다. 스택의 개념에 대해서는 알지만 어떻게 사용해야할지 잘 몰랐던 것 같다. 스택이 비었을때 추가하고, 스택에 값이 있을때 비교하는것... 앞으로는 제발 잊지 않았으면 ..

STUDY/Algorithm 2021.01.28

[프로그래머스] LEVEL2 스킬트리, python3, Summer/Winter Coding(~2018)

def solution(skill, skill_trees): answer = 0 for skill_tree in skill_trees: old_val = skill_tree.find(skill[0]) # 이전값과 비교하기 위한 변수. 처음 값은 skill의 첫 글자의 인덱스값 for sk in skill[1:]: val = skill_tree.find(sk) # val는 비교할 값의 인덱스 if old_val == -1: # 만약 old_val == -1 인 경우에는(스킬트리 내에 없음) if val != -1: # 다음값이 다 -1인 경우(스킬트리에 없는 경우)에만 진행 break # 하나의 값이 존재하면 불가능한 스킬트리 else: # old_val > -1 # 이전값이 스킬트리 내에 있고 if va..

STUDY/Algorithm 2021.01.28