Algorithm
-
[🤷♀️ 프로그래머스 Python] 체육복Algorithm/1일 1코테 2020. 9. 23. 22:05
문제 programmers.co.kr/learn/courses/30/lessons/42862?language=python3 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번� programmers.co.kr 첫번째 시도 def solution(n, l, r): answer = [] n_list = [n for n in range(1,n+1)] for i in n_list: if i not in l and i not in r: answer.append(i) while 1: if len(l) == 0 or len(r) == 0: if len(r) ..
-
[프로그래머스 Python] 핸드폰 번호 가리기Algorithm/1일 1코테 2020. 9. 23. 20:33
문제 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 입출력 예시 알고리즘 뒤의 4자리 수를 제외 -> 슬라이싱 앞에 나머지 수는 *표 -> 전체 길이 - 4만큼 별표 두개를 합침 내가 쓴 답 def solution(phone_number): return '*'*(len(phone_number)-4)+phone_number[-4:] 다른 사람들도 비슷비슷하게 한 듯~
-
[프로그래머스 Python] 하샤드 수Algorithm/1일 1코테 2020. 9. 23. 20:07
문제 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 알고리즘 입력된 x를 각각 a,b로 입력받아 그 합으로 x를 나누었을 때 0이면 True! 그런데 a, b = map(int,str(x)))를 사용해 처리하니 런타임 에러가 발생했다. 그래서 list로 받은 뒤 sum()을 사용하니 통과 왜지..???????? map object가 속도가 느린가? 이 부분에 대해 공부해야 할 것 같다 내가 쓴 답 def solution(x): a = list(map(int, str(x))) i..
-
[프로그래머스 Python] 콜라츠 추측Algorithm/1일 1코테 2020. 9. 23. 19:51
문제 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 내가 쓴 답 def solution(num): answer = 0 while True: i..
-
[프로그래머스 Python] 정수 제곱근 판별Algorithm/1일 1코테 2020. 9. 23. 14:07
문제 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 입출력 예시 알고리즘 1. n의 제곱근을 구한다 2. n의 제곱근이 정수면 return값으로 n의 제곱근 +1의 제곱을 구한다. 3. 정수가 아니면 -1 출력 처음엔 제곱근을 구하는 함수를 사용했을 때 정수가 아니면 error가 나는 줄 알고 try~except문을 사용했는데 그게 아님을 발견! 그러면 정수인지 아닌지 판별을 어떻게 해야할 지 고민하다가 제곱근 값이 int(제곱근)이랑 같으면 정수! 내 답 import math def solution(n): if math.sqrt..
-
[프로그래머스 Python] 정수 내림차순으로 배치하기Algorithm/1일 1코테 2020. 9. 23. 13:46
문제 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 내가 쓴 답 def solution(n): return int(''.join(sorted(str(n), reverse=True))) 알고리즘 1. n을 string으로 바꾼 뒤, reverse로 sorted (리스트로 반환됨) 2. ''.join을 통해 문자열로 바꿈 3. int를 통해 정수로 바꿔줌 다른사람 풀이 def solution(n): ls = list(str(n)) ls.sort(reverse = True) return int("".join(ls)) 똑같은 알고리즘인듯
-
[프로그래머스 Python] 자연수 뒤집어 배열로 만들기Algorithm/1일 1코테 2020. 9. 23. 13:37
문제 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 입출력 예시 내 답 def solution(n): n = str(n) answer = [] for i in range(1, len(n)+1): a = int(n[-i]) answer.append(a) return answer 알고리즘 n에서 거꾸로 뽑은 값 answer에 하나씩 append. 그런데 생각해보니까 파이썬 알고리즘 인터뷰에서 [::-1]이 있었다!! 내 답 2 def solution(n): n = str(n) answer = [] for i in n: answer.append(int(i)) answer = answer[::-1] return ans..
-
[프로그래머스 Python] 자릿수 더하기Algorithm/1일 1코테 2020. 9. 23. 13:03
문제 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 입출력 예시 내 답1 def solution(n): sum = 0 n = str(n) for i in range(len(n)): sum += int(n[i]) return sum 알고리즘 n을 str로 바꿔주고 하나씩 출력하여 sum에 더해줌 문득 리스트로 바꾸면 sum()을 이용해 한번에 처리할 수 있겠단 생각이 들음! 내 답2 def solution(n): return sum([int(i) for i in str(n)]) 성공^~^