python | TypeError: 'str' object does not support item assignment
·
TIL/오류해결
TypeError: 'str' object does not support item assignment string은 아이템 수정이 불가능하다는 뜻이다. 문자열은 인덱스로 접근도 가능하고 리스트와 같이 슬라이싱도 가능하다. 그럼 text의 1번 요소인 e를 a로 바꿔 'hallo'라는 결과를 얻을 수 있을까? 불가능하다. 도대체 assignment의 뜻이 뭐길래 이런 에러가 발생하는 것일까. 궁금해서 직접 검색해 보았다. 에러 메시지에서 assignment는 2번 '배정, 배치'를 의미하는 것으로 보인다. 즉, TypeError: 'str' object does not support item assignment = 문자열에서는 아이템 배치를 지원하지 않는다. 문자열 수정을 위해 리스트처럼 인덱스로 접근은 ..
프로그래머스 | 문자열 밀기 [파이썬 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..