본문 바로가기

알고리즘 & 코딩테스트/코딩테스트

(45)
Programmers Lv.1 "행렬의 덧셈" 행렬의 덧셈은 크게 2가지 방식으로 풀이할 수있다. 바로 numpy 라이브러리를 활용하는 방식과 행렬의 덧셈구조를 그대로 구현하는 방식이다. 아래 방식은 numpy 라이브러리를 이용하는 방식이다. import numpy as np def solution(arr1, arr2): arr1 = np.array(arr1) arr2 = np.array(arr2) answer = arr1+arr2 return answer.tolist() 이제 행렬의 덧셈을 그대로 구현한 방식을 알아보자. 행렬의 덧셈은 행렬의 각 행,열에 해당하는 위치를 그대로 유지한채 각 값을 더해주면 된다. def solution(arr1, arr2): answer = [] for i in range(len(arr1)): temp=[] for ..
Programmers Lv.1 "문자열 다루기 기본" 2가지 조건에 대해 검수한 후 조건에 부합하면 알맞는 값은 반환하면 된다. 조건도 그리 어렵지 않은데, 문자열의 길이가 4 혹은 6이어야 하고 동시에 숫자로만 구성되어 있는지 체크해야 한다. 문자열의 길이는 len()를 사용하면 되고, 숫자로만 구성함을 판단할 땐 isdecimal()을 사용하면 된다. def solution(s): if len(s)==4 or len(s)==6: answer = True if s.isdecimal() else False return answer else: return False
Programmers Lv.1 "부족한 금액 계산하기" 이 문제의 핵심은 1회 이용에 price원인 놀이기구를 N번째 사용하면 원래 이용료의 N배를 받기로 한 것이다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마나 모자라는지 반환하는 것이다. 쉽게 생각하자. count번 타게 될 때 주어진 조건을 따져야하는거기 때문에 먼저 count번 놀이기구 탈 때의 이용료를 다 저장하자. 이를 누적합이라고 했을 때 주어진 money가 누적합보다 크면 금액이 부족하지 않다는 말이므로 0을 return하고, 아닐경우 누적합에서 money를 빼서 얼마나 모자라는지 그 차액을 return하자. def solution(price, money, count): answer, tmp = -1, 0 for cnt in range(1, count+1): tmp..
Programmers Lv.1 "약수의 개수와 덧셈" 요 문제는 매개변수로 주어지는 left와 right 사이의 범위 내에서 각 숫자에 대해 약수의 개수를 구한뒤 그 수가 짝수이면 더하고 홀수이면 빼면 된다. 즉, 약수를 구하는 부분을 따로 생각하고 전체 프로그램 구조를 아래와 같이 생각하면 된다. def solution(left, right): def cntDivisor(number): divisor = [i for i in range(1, number+1) if number%i==0] if len(divisor) % 2 == 0: return 1 else: return -1 answer = 0 for target in range(left, right+1): answer += cntDivisor(target)*target return answer
Programmers Lv. 1 "문자열 내림차순으로 배치하기" 오름차순, 내림차순은 우리가 흔히 사용하는 정렬방식중 하나이다. 너무 자주 사용되기에 내장메서드로도 구현되어있는데, 파이썬은 이를 sort()와 sorted()를 이용해서 제공한다. 대문자가 소문자보다 작은 것으로 취급한다고 하는데, 여기서 낚이면 안된다!!! 파이썬은 C언어를 기반으로 만들어진 것이고, 문자를 비교할 때 아스키 코드값으로 비교를 한다. 즉, 단일 대문자는 당연히 단일 소문자보다 작다. 저 문장은 모르는사람한테 낚시를 거는 문장이 될 것이다. def solution(s): return ''.join(sorted(s, reverse=True))