Programmers / 폰켓몬 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 폰켓몬 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/1845 나의 풀이 def solution(nums): select = len(nums) //2 set_list = set(nums) if len(set_list) > select: return select else: return len(set_list) 출력값으로 요구하는 것이 결국 "선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 return 하면 됩니다." 라는 것이므로 선택할 수 있는 포켓몬의 수가 고를 수 있는 포켓몬 종류(set 함수로 중복 제거) 보다 작으면 선택할 수 있는 포켓몬 수를 리턴하고 그게 아니면 포켓몬 종류의 수를 ..
Programmers / 예산 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 예산 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12982 *문제 포인트가 최대로 몇개의 부서를 지원해줄 수 있는가 이기 때문에 여기에 맞추어 문제를 풀어야한다. 나의 풀이 def solution(d, budget): d.sort() cnt = 0 #예산에서 가장 작은 값들을 빼나가는 구조 for i in d: if i
Programmers / 소수 만들기 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 소수 만들기 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12977 나의 풀이 def solution(nums): a = [] cnt = 0 for i in range(0, len(nums) - 2): # 리스트의 숫자 세개를 고름(조합) for j in range(i + 1, len(nums) - 1): for x in range(j + 1, len(nums)): a.append(nums[i] + nums[j] + nums[x]) #약수 판별 isPrime = True for x in a: for i in range(2,x//2+1): if x % i == 0: isPrime = False ..
Programmers / 이상한 문자 만들기 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 이상한 문자 만들기 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12930 나의 풀이(오답) def solution(s): s = list(str(S)) cnt = 0 s[0] = s[0].upper() for i in range(1,len(s)): #공백을 만나면 cnt 초기화 if s[i-1] == ' ' and s[i] != ' ': cnt = 0 else: cnt += 1 if cnt % 2 == 0: s[i] = s[i].upper() return "".join(s) 테스트는 성공하나, 채점에서 자꾸만 틀렸다.. cnt를 이용해서 해당 문자가 홀수일 때와 짝수일 때 해당 조건에 맞도록..
Programmers / 내적 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 내적 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/70128 나의 풀이 def solution(a, b): sum =0 for i in range(len(a)): sum += a[i]*b[i] return sum 다른 풀이 def solution(a, b): return sum([x*y for x, y in zip(a,b)]) ※ 알아야 할 것 - zip함수를 이용하면 더 간편하다.
Programmers / *행렬의 덧셈 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 행렬의 덧셈 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12950 풀이 def solution(arr1, arr2): answer = [[] for x in range(len(arr2))] for i in range(len(arr1)): # 세로 크기 for j in range(len(arr1[i])): # 가로 크기 answer[i].append(arr1[i][j] + arr2[i][j]) return answer 처음 풀 때 중첩 for문을 이용하여 구현했는데, j에서 리스트 범위에 벗어난다고 오류가 떴었다. answer에도 해당 배열의 길이만큼 2차원배열을 만들어주지 않아서도 오류가 났..
Programmers / 음양 더하기 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 음양 더하기 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/76501 나의 풀이 def solution(absolutes, signs): for i in range(len(absolutes)): if signs[i] == True: pass else: absolutes[i] *= (-1) return sum(absolutes) 다른 풀이 def solution(absolutes, signs): return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs)) zip함수란? zip(*iterable)은..
Programmers / 없는 숫자 더하기 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 없는 숫자 더하기 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/86051 나의 풀이 def solution(numbers): numbers.sort() num_list =[0,1,2,3,4,5,6,7,8,9] new_list = set(num_list) -set(numbers) return sum(new_list) 모범답안 def solution(numbers): return 45-sum(numbers) 문제 조건만 잘보면 생각보다 간단하게 풀 수 있다. 결론은 합만 구하면 되기때문이다.
Programmers / 최대공약수와 최소공배수 찾기 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 최대공약수와 최대공배수 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12940 나의 풀이(시간초과) def solution(n, m): num = [n,m] a = [] b = [] #공통 약수 찾기 for i in range(1,max(num)): if n % i == 0 and m % i == 0: a.append(i) #공배수 찾기 for i in range(1,m*n+1): for j in range(1,m*n+1): if m * i == n * j: b.append(m*i) answer = [max(a),min(b)] return answer 아마 중첩 for문때문에 시간 초과를 한게..
Programmers / 정수 제곱근 판별 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 정수 제곱근 판별 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12934 나의 풀이(오답) def solution(n): answer = -1 for i in range(1,n//2 + 1): if i*i == n: answer = (i + 1) ** 2 return answer 다른 풀이 1. math 라이브러리 사용 import math def solution(n): x = math.sqrt(n) return (x+1)*(x+1) if x == int(x) else -1 [출처] [프로그래머스] LV1. 정수 제곱근 판별(파이썬python)|작성자 iamjuu math 모듈에는 제곱근을 반..
Programmers / 하샤드 수 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 하샤드 수 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12947/solution_groups?language=python3 나의 풀이 def solution(x): new_x = str(x) sum = 0 for i in new_x: sum += int(i) if x % sum == 0: return True else: return False
Programmers / 콜라츠 추측 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 콜라츠 추측 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12943 나의 풀이 def solution(num): cnt = 0 while num > 1: if num % 2 == 0: num = num/2 cnt += 1 elif num % 2 == 1: num = num*3 + 1 cnt += 1 if cnt == 500: cnt = -1 break return cnt 문제의 조건대로만 작성하면 쉽게 풀 수 있다. 다른 풀이 def collatz(num): for i in range(500): num = num / 2 if num % 2 == 0 else num*3 + 1 if num == ..