본문 바로가기

Algorithm/프로그래머스 연습 문제

(53)
프로그래머스 / 코딩 테스트 / 가운데 글자 가져오기 문제 설명 문제 해결 문자열의 길이가 짝수라면 길이 / 2 해준 후 start를 m - 1 end를 m + 1로 지정하고 문자열을 인덱싱해준다. 문자열의 길이가 홀수라면 길이 / 2 해준 값을 소수점을 버리고 인덱싱에 사용해주면된다. 삼항연산자를 사용하면 코드를 더 짧게 줄일 수 있다. (가독성 면모는 모르겠다..) def solve(s): return s[int(len(s) / 2)-1 : int(len(s) / 2) + 1] if len(s) % 2 == 0 else s[int(len(s) /2)] def solution(s): answer = solve(s) return answer
프로그래머스 / 코딩 테스트 / 3진법 뒤집기 문제 설명 문제 해결 10진수로 표현된 숫자를 어떻게 3진수로 바꿀 수 있을지 생각해야 한다. 일단 10진수, 3진수 대응표를 그려봤다. 어떤 특징이 보일까? 3의 n(자연수)제곱 관련 숫자들이 나타날 때마다 자리수가 바뀌는 양상을 띄고 있다. 일단 문제의 자연수 n이 3보다 낮을 때는 기존의 10진수와 결과가 동일하다. 자연수 n이 3보다 높다면, 실질적인 10진수 -> 3진수 변환 작업을 진행한다. 결과를 담을 문자열 변수를 생성하고 n을 3으로 나눈 몫과 나머지를 구한다. 나머지를 문자로 변환하여 결과 앞에 붙여준다. 작업을 반복하다가 3으로 나눈 몫이 3보다 작다면 변환 작업이 마무리되어야하므로 앞에 n을 붙여주고 마무리한다. def base10_to_base3(n): if n < 3 : retu..
프로그래머스 / 코딩 테스트 / 직사각형 별찍기 문제 설명 문제 해결 가로 = a, 세로 = b이다. 곱연산을 이용해 가로, 세로 길이를 맞춰주면된다. a, b = map(int, input().strip().split(' ')) print(('*' * a + '\n') * b,end='')
프로그래머스 / 코딩 테스트 / 행렬의 덧셈 문제 설명 문제 해결 comprehension을 쓰면 깔끔하게 작성할 수 있다. def solve(x, n): return [x * i for i in range(1,n+1)] def solution(x, n): answer = solve(x,n) return answer
프로그래머스 / 코딩 테스트 / 핸드폰 번호 가리기 문제 설명 문제 해결 python에서는 문자열에 곱연산을 할 수 있다. 파이썬(python) 문자열의 곱셈과 덧셈 파이썬에서는 문자열끼리 더하거나 곱할 수 있다. 문자열끼리 연결하는데 덧셈 연산자를 사용하는 것은 다른 언어에서도 흔하지만 곱셈은 독특하다. 두 개의 문자열을 더하면 문자열이 하 studymake.blogspot.com 곱연산, 슬라이싱을 이용하면 코드를 짧게 만들 수 있다. def solve(s): return '*' * (len(s)-4) + s[len(s)-4:] def solution(phone_number): answer = solve(phone_number) return answer
프로그래머스 / 코딩 테스트 / 하샤드 수 문제 설명 문제 해결 x를 문자열로 변환하고 각 문자를 숫자로 변환하여 더하여 합을 구한다. x를 합으로 나머지 연산을 진행한 후, 나머지가 있는지 없는지 확인해주면 된다. def solve(x): return x % sum([int(ch) for ch in str(x)]) == 0 def solution(x): answer = solve(x) return answer
프로그래머스 / 코딩 테스트 / 평균 구하기 문제 설명 문제 해결 간단하게 평균을 구해서 반환해주면 된다. def solve(arr): return sum(arr) / len(arr) def solution(arr): answer = solve(arr) return answer
프로그래머스 / 코딩 테스트 / 콜라츠 추측 문제 설명 문제 해결 콜라즈 추측에 대해서 실제로 연산하는 프로그램을 작성하면 된다. 삼항연산자를 이용하면 코드를 많이 줄일 수 있다. (다만 가독성이 좋은지는 잘 모르겠다.) def solve(num): cnt = 0 while num != 1 and cnt = 500 else cnt def solution(num): answer = solve(num) return answer
프로그래머스 / 코딩 테스트 / 최대공약수와 최소공배수 문제 설명 문제 해결 math 모듈을 import 하여 간단하게 풀 수 있다. import math def solve(n,m): return [math.gcd(n,m), n * m / math.gcd(n,m)] def solution(n, m): answer = solve(n,m) return answer 두 수의 최대공약수를 구하는 방법이 무엇이 있을까 찾아봤고 유클리드 호제법을 발견했다. 유클리드 호제법 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 ko.wikipedia.org 최대 공약수를 구하는 알고..
프로그래머스 / 코딩 테스트 / 짝수와 홀수 문제 설명 문제 해결 Python의 Ternary operators를 사용하면 짧게 코드를 구현할 수 있다. def solve(num): return "Even" if num % 2 == 0 else "Odd" def solution(num): answer = solve(num) return answer