본문 바로가기

프로그래밍/알고리즘128

프로그래머스-없는 숫자 더하기 파이썬 문제 풀이 def solution(numbers): num = [1,2,3,4,5,6,7,8,9] answer = list(set(num)-set(numbers)) return sum(answer) 먼저, num 배열을 만들어서 들어갈 숫자를 넣고 집합의 개념을 활용해 문제를 푼다 set은 중복을 없애주는 method이다 그리고 sum을 활용해 구한 수를 모두 더한다 def solution(numbers): return 45 - sum(numbers) 1에서 9까지 다 더한 숫자가 45라는 점에서 착안한 풀이이다.. 완전 생각도 못했다 완전 참신.... solution = lambda x: sum(range(10)) - sum(x) 위의 코드를 lambda를 활용해 더 축약한 그는 대체... 2022. 12. 29.
프로그래머스 - 핸드폰 번호 가리기 파이썬 문제 문제 풀이 #함수형으로 풀이 def solution(phone_number): answer = "*"*(len(phone_number)-4) return answer + (phone_number[-4:]) #람다식을 활용한 풀이 solution = lambda phone_number: "*"*(len(phone_number)-4)+phone_number[-4:] 이 문제를 풀면서 인덱스 배열에 대해 정리를 했다 [-4:]의 뜻은 기존 배열의 상태에서 -4까지라는 뜻이다 [::-4]의 뜻은 전체 배열을 뒤집은 상태에서 -4까지 라는 뜻이다 2022. 12. 28.
프로그래머스 - 콜라츠 추측 파이썬 문제 문제 풀이 def solution(num): answer = 0 #만약 1이라면 if num == 1: #0을 리턴 return 0 #while문으로 작성 while True: #짝수거나 홀수면 각각 맞게 num을 변환 num = num/2 if num % 2 == 0 else (num*3)+1 #그리고 answer에는 +1을 진행 answer += 1 #이렇게 한 것이 1이라면 if num == 1: return answer #500까지 했는데 1이 안되면 elif answer == 500: #-1을 리턴 return -1 return answer 2022. 12. 26.
프로그래머스 - 정수 내림차순으로 배치하기 파이썬 문제 내 풀이 #sort 활용 def solution(n): ls = list(str(n)) ls.sort(reverse= True) return int("".join(ls)) #sorted 활용 def solution(n): ls = sorted(str(n), reverse = True) return int("".join(ls)) sort(): - 정렬하고 목록 인덱스를 변경하고 None을 반환함, 원본을 바꿈 - 내림차순 a = [1,3,2,5,4] a.sort(reverse = True) print(a) # [5, 4, 3, 2, 1] sorted(): - 새로운 정렬된 목록을 반환하여 원본에 영향을 주지 않는다 - 출력시 list로 나오기 때문에 따로 'list'로 묶지 않아도 된다 - 내림차순 .. 2022. 12. 23.
프로그래머스 - 문자열을 정수로 바꾸기 파이썬 문제 나의 풀이 def solution(s): return int(str(s)) 문자열의 s를 int형식, 즉 정수형식으로 바꾸어서 해결하였다 간단한 문제이지만 한번에 통과되어 매우 기쁘다 또한, -와 +기호는 정수형으로 바꾸면서 알아서 부호로 인식하기 때문에 따로 코드를 작성하지 않아도 된다 다른 풀이 def strToInt(str): result = 0 for idx, number in enumerate(str[::-1]): if number == '-': result *= -1 else: result += int(number) * (10 ** idx) return result 조금 복잡하다... 2022. 12. 22.
프로그래머스 - 문자열 내 p와 y의 개수 파이썬 나의 풀이 def solution(s): return s.lower().count('p') == s.lower().count('y') 먼저 지역변수로 활용할 함수를 만들고 모든 문자를 소문자로 바꾼 후 'p'의 개수를 센다 마찬가지로 'y'의 개수를 센다 근데 이렇게 풀면 'p'랑 'y'랑 하나도 없으면 개수가 같게 되는거 아닌가...? 아 그래서 true로 정했구나 문제에서! solution = lambda s : s.lower().count('p') == s.lower().count('y') 람다를 활용하여 풀었다 2022. 12. 21.
프로그래머스 - 자연수 뒤집어 배열로 만들기 파이썬 문제 나의 풀이 def solution(n): return list(map(int, reversed(str(n)))) 해야할 일은 - 자연수 만들기 - 배열의 형태로 리턴하기 문자형으로 n을 형변환하고 이를 뒤집어(reverse)하고 다시 숫자형으로 바꾼다음, map과 list로 완료한다 맵을 쓰는 이유: 파이썬의 내장 함수인 map() 는 여러 개의 데이터를 한 번에 다른 형태로 변환하기 위해서 사용됩니다. 따라서, 여러 개의 데이터를 담고 있는 list나 tuple을 대상으로 주로 사용하는 함수입니다. 다른 풀이 def digit_reverse(n): return [int(i) for i in str(n)][::-1] 2022. 12. 20.
프로그래머스 - 짝수와 홀수 파이썬 문제 내가 작성한 풀이 #함수를 만듦 def solution(num): #만약에 num이 2로 나누어 떨어진다면(짝수의 조건) if num % 2 == 0: #'Even'을 출력 return 'Even' #0으로 떨어지지 않는다면 else: #'Odd'를 리턴 return 'Odd' 다른 사람들의 풀이 def evenOrOdd(num): return ["Even", "Odd"][num & 1] 위 풀이는 간단한 숏코드이다 def evenOrOdd(num): if (num%2): return "Odd" else: return "Even" 위 풀이는 참신하다 두번째 줄을 보면 (num%2) 자체를 조건문안에 넣어서 값이 있으면 true로 인식하여 'odd'로 되고 값이 없으면 false로 인식하여 'even.. 2022. 12. 19.
백준 2606 - 바이러스 파이썬 문제 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 코드 #BFS로 풀기 from collections import deque #컴퓨터의 개수 n=int(input()) #연결선의 개수 v=int(input()) # 연결선 개수 #그래프 초기화 graph = [[] for i in range(n+1)] #방문한 컴퓨터인지 표시, 길이가 (n+1)이고 0으로 이루어짐 visited=[0]*(n+1) #그래프 생성 for i in range(v): #연결된 컴퓨터 번호를 각 a, b로 입력을 받음 a,b=map(in.. 2022. 12. 5.