Engineering WIKI
-
collections 모듈 - CounterEngineering WIKI/Python 2022. 5. 12. 15:23
collections.Counter()의 결과값(return)은 딕셔너리 형태로 출력 # collections.Counter 예제 (1) # list를 입력값으로 함 import collections lst = ['aa', 'cc', 'dd', 'aa', 'bb', 'ee'] print(collections.Counter(lst)) ''' 결과 Counter({'aa': 2, 'cc': 1, 'dd': 1, 'bb': 1, 'ee': 1}) ''' # collections.Counter 예제 (2) # dictionary를 입력값으로 함 import collections print(collections.Counter({'가': 3, '나': 2, '다': 4})) ''' 결과 Counter({'다': 4..
-
vars() 내장함수Engineering WIKI/Python 2022. 5. 10. 23:50
모듈, 클래스, 인스턴스 또는 dict 어트리뷰트가 있는 다른 객체의 dict 어트리뷰트를 돌려줍니다. 인자가 없으면, vars() 는 locals() 처럼 동작합니다. locals 딕셔너리에 대한 변경이 무시되기 때문에 locals 딕셔너리는 읽기에만 유용하다는 것에 주의하세요 locals은 말그대로 locals()가 실행되어지는 함수내의 지역 namespace 들을 정리해서 넣어주고 globals는 전역, 지역, builtin 정보 모두 dict 형태로 정리해 준다. 아래 예제를 통해 이해해 보자. locals(), vars() 예제 a_var = range(2) def locals_test(): b_var = 3 c_var = "hi" d_var = locals() print(d_var) local..
-
[프로그래머스] 행렬 테두리 회전하기Engineering WIKI/Programmers 2022. 5. 10. 23:26
코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 다른사람 풀이 answer = [] array = [[0 for col in range(columns)] for row in range(rows)] t = 1 for row in range(rows): for col in range(columns): array[row][col] = t t += 1 먼저 행렬을 만들어줘야한다. 처음에는 값이 0으로 초기화된 rows*columns 크기의 배열을 만들어준다. 그 후, 가로방향으로 숫자가 1씩 증가하..
-
[프로그래머스] 타겟넘버Engineering WIKI/Programmers 2022. 5. 6. 14:20
코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 다른사람 풀이 - DFS def solution(numbers, target): answer = 0 queue = [[numbers[0],0], [-1*numbers[0],0]] n = len(numbers) while queue: temp, idx = queue.pop() print(temp) idx += 1 if idx < n: queue.append([temp+numbers[idx], idx]) queue.append([temp-nu..
-
파이썬 리스트 컴프리헨션Engineering WIKI/Python 2022. 5. 4. 17:07
num_list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] new_list = [] # 평소에는 아래와 같이 작성 for num in num_list: if num > 3: new_list.append(num) # 여기서 List Comprehension을 사용하면 더 짧고 간결하게 코드를 작성할 수 있습니다. new_list = [ num for num in num_list if num > 3 ] # 이외에도 filter를 활용하는 방법도 있습니다. new_list = list(filter(lambda x: x > 3, num_list))
-
[프로그래머스] 124 나라의 숫자Engineering WIKI/Programmers 2022. 5. 4. 17:03
코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 다른사람 풀이 (성공) def solution(n): answer = '' n_array = ["1", "2", "4"] while n > 0: n -= 1 answer = n_array[n % 3] + answer n //= 3 return answer 하나의 배열을 만들어 줍니다.n_array=["1","2","4"] 를 만들어서 계속 뺑뺑이 돌려줍니다. 숫자 n에서 n%3을 했을 때, 0,1,2가 나오게 됩니다. 0이 나오면 11이 나오면 23이 나오면 4 이렇게 출력이 되도록 합니다.n-1을 하고, n%3을 해서 배열결과물을 출력합니다. n=1이면, n-1(1-1=0)을 해서 n%3(0%3=0)을 해서 1 출력n=2이면, n-..
-
Python 데코레이터Engineering WIKI/Python 2022. 5. 2. 22:30
정의 : 데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용합니다 def hello(): print('hello 함수 시작') print('hello') print('hello 함수 끝') def world(): print('world 함수 시작') print('world') print('world 함수 끝') hello() world() hello 함수 시작 hello hello 함수 끝 world 함수 시작 world world 함수 끝 만약 다른 함수도 시작과 끝을 출력하고 싶다면 함수를 만들 때마다 print를 넣어야 합니다. 따라서 함수가 많아지면 매우 번거로워집니다. 이런 경우에는 데코레이터를 활용하면 편리합니다. 다음은 함수의 시작과 끝을 출력하는 데코레이터입니다. def..
-
[프로그래머스] 오픈채팅방Engineering WIKI/Programmers 2022. 5. 2. 22:04
코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 내풀이 (1차 실패) def solution(record): id_dic = {} answer = [] for change in record: id_dic[change.split()[1]] = change.split()[-1] for message in record: if "Enter" in message: answer.append(id_dic[message.split()[1]] + "님이 들어왔습니다.") elif "Leave" in message: answe..