python / 얕은 복사, 깊은 복사
·
카테고리 없음
파이썬에는 immutable객체와 mutable 객체가 있다. immutable 객체 - 값을 바꿀 수 없는 객체 - 값이 바뀌면 다른 메모리 공간을 할당하여 주소값도 바꿔줘야 한다. - int, str, float, boolean, tuple mutable 객체 - 주소값이 동일하더라도 그 안의 값을 바꿀 수 있는 객체 - list, dict, set 얕은 복사와 깊은 복사는 mutable 객체를 복사할 때만 신경쓰면 된다. 얕은 복사 - 객체의 참조값, 흔히 말하는 주소값만 복사하는 것 - 객체의 주소값을 복사하기 때문에 복사 대상의 값이 바뀌면 복사한 값도 바뀜 → 두 변수 간 독립성이 성립하지 않게 됨 a=[1,2,3] b=a print(a, b) #[1,2,3][1,2,3] print(id(a)..
Programmers / 2단계 / 튜플 / python / 2019 카카오 개발자 겨울 인턴십
·
코딩테스트/programmers (python)
코딩테스트 연습 - 튜플 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 def solution(s): result=[] s=s[2:-2] s=s.split('},{') s.sort(key=lambda x: len(x)) for i in range(len(s)): if ',' not in s[i]: result.append(int(s[i])) else: for j in s[i]: if j not in s[i-1] and j!=',': result.append(int(j)) return result 튜플의 각 요소가 한 자리 수일 때만 적용되는 코드라 테스트 3에서 실패한 것 같다 모범 답안 def solution(s): answer = [] s = s[2:-2] s = s.split(..
Programmers / 2단계 / 모음사전 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/84512 나의 풀이 . word의 길이와 각 알파벳의 인덱스 값을 이용해 결과를 찾아낼 수 있을 것이라고 생각하였으나 어려움이 있었다. 모범 답안 중복 순열 이용 from itertools import product def solution(word): words = [] for i in range(1, 6): for c in product(['A', 'E', 'I', 'O', 'U'], repeat=i): words.append(''.join(list(c))) words.sort() return words.index(word) + 1 단순히 중복 순열을 이용하여 sort함수로 정렬을 하면 되는 문제였..
Programmers / 2단계 / 타겟 넘버 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 타겟 넘버 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 DFS로 구현 def dfs(numbers, target, idx, values): # idx : 깊이 / values : 더하고 뺄 특정 leaf 값 global cnt cnt = 0 if idx == len(numbers) & values == target : # 깊이가 끝까지 닿았으면 cnt += 1 return elif idx == len(numbers) : # 끝까지 탐색했는데 sum이 target과 다르다면 그냥 넘어간다 return # 재귀함수로 구현 dfs(numbers, target, idx+1, values + numbers[idx]) # 새로운 value 값 세팅 dfs(n..
Programmers / 2단계 / 캐시 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - [1차] 캐시 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(cacheSize, cities): cache = [] time = 0 for city in cities: city = city.lower() if cacheSize: if not city in cache: if len(cache) == cacheSize: cache.pop(0) cache.append(city) time += 5 else: cache.pop(cache.index(city)) cache.append(city) time += 1 else: time += 5 return time LRU : 가장 오랫동안 참조되지 않은 페이지를 교체 LRU 예시) 캐시크기..
Programmers / 2단계 / 의상 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 의상 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(clothes): clothes_type = {} for c, t in clothes: if t not in clothes_type: clothes_type[t] = 2 #첨에 딕셔너리에 해당 종류의 의상이 없을 때 그 의상을 더 해주면서 #아무것도 안입었을때의 경우를 함께 생각해서 2를 더해줍니다. else: clothes_type[t] += 1 cnt = 1 for num in clothes_type.values(): cnt *= num return cnt - 1 def solution(clothes): hash_map = {} for clothe, type in clot..
Programmers / 2단계 / 가장 큰 수 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 가장 큰 수 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 def solution(numbers): string='' number = list(map(str, numbers)) num = number.sort(key = lambda x: x[0], reverse=True) for i in num: string+=i return string 모범 답안 def solution(numbers): numbers = list(map(str, numbers)) numbers.sort(key=lambda x: x*3, reverse=True) return str(int(''.join(numbers))) 먼저 30과 3, 39 라는 수가 있다고 가정합니다. 원하는 결과값을 얻기..
Programmers / 2단계 / 행렬의 곱셈 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 행렬의 곱셈 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(arr1, arr2): answer = [[0 for _ in range(r)] for _ in range(m)] for i in range(len(arr1)): for k in range(len(arr2[0])): for j in range(len(arr1[0])): answer[i][k] += arr1[i][j] * arr2[j][k] return answer