Engineering WIKI
-
[프로그래머스] 문자열 압축Engineering WIKI/Programmers 2022. 5. 2. 22:02
코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 다른사람 풀이 (성공) def solution(s): answer = len(s) # 1개 단위(step)부터 압축 단위를 늘려간다. for step in range(1, len(s) // 2 + 1): compressed = '' prev = s[:step] # 앞에서부터 step만큼의 문자열 출력 count = 1 # 단위 크기 만큼 증가시키며, 이전 문자열과 비교 for j in range(step, len(s), step): # 이전 횟수와 동일하..
-
[프로그래머스] 직사각형 별찍기Engineering WIKI/Programmers 2022. 5. 1. 10:21
코딩테스트 연습 - 직사각형 별찍기 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수 programmers.co.kr 내풀이 (성공) a, b = map(int, input().strip().split(' ')) for i in range(b): print(a * "*") 다른방법 1 a, b = map(int, input().strip().split(' ')) print(("*" * a + "\\n") * b)
-
[프로그래머스] x만큼 간격이 있는 n개의 숫자Engineering WIKI/Programmers 2022. 4. 30. 18:23
코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. programmers.co.kr 내풀이 (성공) def solution(x, n): answer = [] if x == 0: answer = [0] * n return answer; if x > 0: repeat_range = (x * n) + 1 if x < 0: repeat_range = (x * n) - 1 for i in range(x, repeat_range, x): answer.append(i) return answer 다른방법 1..
-
[프로그래머스] 행렬의 덧셈Engineering WIKI/Programmers 2022. 4. 30. 18:08
코딩테스트 연습 - 행렬의 덧셈 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요 programmers.co.kr 내풀이 (성공) def solution(arr1, arr2): for i in range(len(arr1)): for j in range(len(arr1[i])): arr1[i][j] += arr2[i][j] return arr1 다른방법 1 def sumMatrix(A,B): answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)] return answer # 아래는 테스트로 ..
-
[프로그래머스] 핸드폰 번호 가리기Engineering WIKI/Programmers 2022. 4. 29. 09:58
코딩테스트 연습 - 핸드폰 번호 가리기 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자 programmers.co.kr 내풀이 (성공) def solution(phone_number): answer = '' stop_len = len(phone_number) - 4 answer = '*' * stop_len answer += phone_number[stop_len:] return answer 다른방법 1 # 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다. # 새로운 함수 구성을 적용하려면 ..
-
[프로그래머스] 하샤드 수Engineering WIKI/Programmers 2022. 4. 29. 09:31
코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr 내풀이 (성공) def solution(x): answer = True sum_x = 0 for i in str(x): sum_x += int(i) if x % sum_x != 0: answer = False return answer 다른방법 1 def Harshad(n): # n은 하샤드 수 인가요? return n % sum([int(c) for c in str(n)]) == 0 # 아래는 테스트로 출력해 보기 위한 코드입니다. p..
-
파이썬 __ slots __Engineering WIKI/Python 2022. 4. 28. 03:50
파이썬 __ slots __ 클래스를 사용해보았다면 __dict__을 통해서 클래스의 인스턴스가 가진 모든 속성을 확인해본적이 있을 것이다. 딕셔너리는 메모리를 많이 잡아먹는 단점이 있는데, 만약 수 백만개의 인스턴스를 생성한다면 그 만큼 사용되는 메모리가 매우 크게 증가한다는 것을 의미한다. 클래스가 가지는 속성을 제한함으로써 최적화를 할 수 있으며 이 때 필요한 __slot__이라는 키워드에 대해서 정리해보자. slots 이란? slots은 클래스가 가진 속성을 제한할때 사용한다. 클래스의 dict 속성을 최적화하는 데에 사용할 수 있는데 기존의 딕셔너리로 관리하는 속성을 집합 형태의 Set으로 바꿈으로써 동작한다. 메모리를 절약할 수 있다는 장점이 있다. ( __slots__은 객체마다 생성되는 _..
-
[프로그래머스] 평균 구하기Engineering WIKI/Programmers 2022. 4. 28. 03:27
코딩테스트 연습 - 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr programmers.co.kr 내풀이 (성공) def solution(arr): return sum(arr) / len(arr) 다른방법 1 from functools import reduce def average(list): # 함수를 완성해서 매개변수 list의 평균값을 return하도록 만들어 보세요. return reduce(lambda x, y : x + y, list) / len(list) # 아래는 테스트로 출력해 보기..