프로그래머스 | 문자열 밀기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 시도한 코드 def solution(A, B): Alist = list(A) idx = B.index(A[0]) for i in range(len(Alist)): if i+idx >= len(A): Alist[(i+idx) % len(Alist)] = A[i] else: Alist[i+idx] = A[i] if Alist == list(B): return idx else: return -1 먼저, 주어진 테스트 케이스들을 보며 규칙을 찾아내었다. B에서 A의 첫 번째 문자열이 위치한 인덱스를 찾으면 그 ..
python | UnboundLocalError: local variable referenced before assignment
·
TIL/오류해결
UnboundLocalError가 발생하는 이유는 함수 밖에서 선언한 변수를 함수 내에서 사용했기 때문이다. 함수 내에서 사용했다는 의미가 무엇이냐 하면, 함수 func() 밖에서 x라는 변수를 선언하고 1을 변수 x의 값으로 부여했다. 그다음 함수를 정의하는 과정에서 함수 밖에 위치한 변수인 x를 사용하였다. line by line으로 실행되니 먼저 실행되는 x=1 다음에 함수를 정의해 주었으니 문제 될 것이 없지 않느냐라고 생각할 수도 있다. 하지만 에러메시지를 보면 이 말은 잘못됨을 알 수 있다. local variable 'x' referenced before assignment = 함수 내에서 값을 할당하려고 보니 '지역변수' x가 참조되었습니다. 이런 의미이다. 그러므로 x는 먼저 작성된 코드..
프로그래머스 | 옹알이 (1) [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 from itertools import permutations def solution(babbling): answer = 0 perm = [] # 가능한 모든 말 for i in range(4): perm.append(list(permutations(["aya", "ye", "woo", "ma"], i+1))) for i in range(len(perm)): # 튜플로 구성된 순열을 하나의 문자열로 바꿈 for j in range(len(perm[i])): perm[i][j] = ''.join(list(..
프로그래머스 | 등수 매기기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(score): avg = [sum(i)/2 for i in score] # 평균 s_avg = sorted(avg, reverse=True) # 평균을 큰 값부터 내림차순 정렬 answer =[] # 등수 for i in avg: answer.append(s_avg.index(i)+1) # index는 맨 앞에 위치한 요소의 인덱스 번호를 리턴 return answer score = [[80, 70], [70, 80], [30, 50], [90, 100], [100, 90], [1..
프로그래머스 | 특이한 정렬 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(numlist, n): answer =[] # n과의 거리를 저장할 리스트 for i in numlist: answer.append(i - n) result = [] # 정렬한 배열 # 거리가 n에 가까운 순으로 정렬, 절댓값이 같으면 양수(= 큰 값) 먼저 for i in sorted(answer[:], key=lambda x:[abs(x), -x]): result.append(numlist[answer.index(i)]) return result [1, 2, 3, 4, 5, 6..
프로그래머스 | 유한소수 판별하기 [파이썬 python]
·
Algorithm/프로그래머스
코딩테스트 연습 - 유한소수 판별하기 소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 유한소수가 되기 위한 분수의 조건 school.programmers.co.kr 코드 import math def solution(a, b): gcd = math.gcd(a, b) # 분모, 분자의 최대공약수를 구해 b를 최대공약수로 나눔 b //= gcd num = [] # 소인수 저장 i = 2 while i