python3 27

[프로그래머스] LEVEL1 최대공약수와 최소공배수, python3

def solution(n, m): answer = [] if n>m: # m is always bigger tmp=m m=n n=tmp tmp_big=m #initial settings tmp_small=n gcd=tmp_big%tmp_small #최대 공약수, Euclid algorithm, m=n*i+x -> m'=n, n'=x -> while (gcd):#나머지가 있으면 tmp_big= tmp_small tmp_small=gcd gcd=tmp_big%tmp_small answer.append(tmp_small) #최소 공배수 answer.append(n*m/(answer[0])) return answer 최대 공약수 구하는 알고리즘을 몰라서 하나씩 다 찾아보면서 해봤는데 통과할수 없었다. 그래서 ..

STUDY/Algorithm 2019.10.19

[프로그래머스] 제일 작은 수 제거하기,python3

def solution(arr): answer=arr arr=sorted(arr,reverse=True) tmp=arr.pop() answer.remove(tmp) if answer==[]: answer.append(-1) return answer 다른 사람 풀이를 보니 정말 간단하게 풀었더라. 나는 정렬한 리스트에서 마지막값(최소값)을 빼서 제거하는 방법인데 이풀이는 아예 리스트의 최소값보다 큰값만 가져오는 거다. 역시 사람은 배워야한다. 저런 유형을 계속 보는거 같은데 아직 사용하기는 힘들다 def solution(arr): answer = [i for i in arr if i > min(arr)] if answer == []: answer.append(-1) return answer

STUDY/Algorithm 2019.10.19

[프로그래머스] LEVEL1 정수 내림차순으로 배치하기,python3

def solution(n): answer = 0 tmp='' m=list(str(n)) m.sort() m.reverse() for i in m: tmp+=(i) answer=int(tmp) return answer 다른사람이 했던 코드도 나랑 방법은 비슷한데 더 짧게 썼다. sort안에 reverse=True 하면 반대로 정렬... def solution(n): ls = list(str(n)) ls.sort(reverse = True) return int("".join(ls)) def solution(n): num=list(str(n)) num.sort(reverse=True) answer=" " for k in num: answer+=str(k) return int(answer)

STUDY/Algorithm 2019.10.19

[프로그래머스] LEVEL1 이상한 문자 만들기, python3

def solution(s): answer = '' cnt=0 for i in range(len(s)): if s[i].isspace(): # if a character is space, initialize cnt cnt=0 if (s[i].isupper()) or (s[i].islower()): cnt +=1 # if a character is not a letter, not count if cnt%2: #cnt is odd, index is even answer+=s[i].upper() else: #cnt is even, index is odd answer+=s[i].lower() return answer 이거때문에 이틀을 골머리 썩혔다. 처음엔 특수문자있는 경우를 생각을 하지 못하여서 통과를 못했다..

STUDY/Algorithm 2019.10.19

[프로그래머스] LEVEL1 시저암호, python3

def solution(s, n): answer = '' # 알파벳 26개, A 65 Z: 90 a:97 z:122 (space): 32 for i in s: if ord(i)==32: # case (SPACE) answer+=(i) continue elif (ord(i)>=65) & (ord(i)90: tmp-=26 answer+=(chr(tmp)) elif (ord(i)>=97) & (ord(i)122: tmp-=26 answer+=(chr(tmp)) return answer C에서는 character를 int로 찍으면 ascii code로 나타내주는데 파이썬은 ord()함수를 써야했다. ord()함수를 사용해서 (space)면 그대로 추가하고 upper나 lower 이면 시저암호를 돌리는 방식이다...

STUDY/Algorithm 2019.10.17

[프로그래머스] LEVEL1 소수 찾기, python3

첫번째 시도 def solution(n): answer = 0 prime_num=[] for i in range(2,n+1): for j in range(2,i+1): if (i%j==0): if (i!=j): break prime_num.append(i) answer = len(prime_num) return answer 효율이 좋지 않아서(시간초과되어서) 전체를 다 풀지 못하였다. 두번째 시도 def solution(n): answer = 0 prime_num=[] for i in range(2,n+1): chk=True for j in prime_num: if (i%j==0): # if i isnt primenum chk=False # chk changes false break if chk: # c..

STUDY/Algorithm 2019.10.17

[프로그래머스] LEVEL1 문자열 내림차순으로 배치하기, python3

def solution(s): answer = ''.join(sorted(s, reverse=True)) return answer 내가 해보고싶었지만 sort로 정렬할때마다 계속 NONE 값이 나와서 진행을 하지 못하였다. 여기서 배운건 join 함수와 sorted 함수이다. join() 함수는 문자열을 추가할수 있는 함수이다. 출처: https://wikidocs.net/13 지난번 혼공파(혼자공부하는파이썬)에서 문자열 관련 함수들을 대충보고 넘어갔는데 여기서 쓰일줄 몰랐다. sorted()함수는 정렬 해주는 함수이다. sort와 sorted의 차이는 다음과 같다. 출처: https://ychae-leah.tistory.com/9 list.sort() / string.sort(): 원본을 직접 정렬, ..

STUDY/Algorithm 2019.10.16