분류 전체보기 665

[백준] 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

4835. [파이썬 S/W 문제해결 기본] 1일차 - 구간합

tc = int(input()) for T in range(1,tc+1): N, M = map(int, input().split()) #print("N: {} M:{}".format(N,M)) ai = list(map(int,input().split()))# print(ai) bi=[] ci=[] for k in range(M): tmp=ai[k:k+N-M+1]# print(tmp) bi.append(tmp) for j in range(0,N-M+1): # 여기에서 애를 많이 먹었다 tmp2=0 for i in range(0,M): # tmp2+=bi[i][j] ci.append(tmp2) mx,mn=max(ci),min(ci) print("#{0} {1}".format(T,mx-mn)) 어느정도 쉽게 ..

STUDY/Algorithm 2021.01.11

4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드

tc = int(input()) #첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 ) for T in range(1,tc+1): N=int(input()) ai=list(input()) #print(ai) dic={} for i in range(0,N): tmp=int(ai.pop()) if tmp in dic: dic[tmp] += 1 else: dic[tmp]= 1 #key 두개로 정렬하는게 중요한 포인트였다. 위는 다 생각했는데 딕셔너리 정렬하는 방법을 제대로 인지하지 않았다 dic=sorted(dic.items(),key=lambda x:(x[1],x[0]), reverse = True) print("#{} {} {}".format(T,dic[0][0],dic[0][1]))

STUDY/Algorithm 2021.01.11