본문 바로가기

Python

(30)
[이것이 취업을 위한 코딩테스트다] 구현: 시뮬레이션과 완전 탐색 구현(Implementation) 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 지칭 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제 실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제 문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제 적절한 라이브러리를 찾아서 사용해야 하는 문제 완전탐색 : 모든 경우의 수를 주저 없이 다 계산하는 해결 방법 시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행 일반적으로 알고리즘 문제에서의 2차원 공간은 행렬(Matrix)의 의미로 사용 상하좌우 여행가 A는 N x N 크기의 정사각형 공간에 서 있습니다. 이 공간은 1 x 1 크기의 정사각형으로 나누어져 있습니다. ..
파이썬 n진수 변환 10진수 n진수 변환 int 함수의 2번째 인자를 활용하여 8, 16, 2진수 문자열을 정수형(int)로 형변환 int(문자열, n) n : 8(8진수), 16(16진수), 2(2진수) oct() 함수 10진수 -> 8진수 문자열 '0o' 가 붙음 hex() 함수 10진수 -> 16진수 문자열 '0x' 가 붙음 bin() 함수 10진수 -> 2진수 '0b'가 붙음 이진수 더하기 이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요. 제한사항 return 값은 이진수를 의미하는 문자열입니다. 1 ≤ bin1, bin2의 길이 ≤ 10 bin1과 bin2는 0과 1로만 이루어져 있습니다. bin1과 bin2는 "..
[프로그래머스] 가까운 수 🪄내가 한 solution array의 인덱스와 값으로 부터 [인덱스, |값 - n|, 값] 리스트를 만든다 해당 리스트를 sorted()를 사용하여, 정렬 기준으로 x[1](|값 - n|) -> x[-1](값) 오름차순 정렬한다 가장 가까운 수가 여러개일 경우 작은 수를 리턴하기 위해 두번째 정렬 조건으로 값(x[-1]) 정해줌 정렬이 완료된 리스트에서 0번째 리스트의 0번째 값을 리턴한다 def solution(array, n): return array[sorted([[index, abs(n-num), num] for index, num in enumerate(array)], key = lambda x: (x[1], x[-1]))[0][0]] 💡추가로 알아야 할 것 sorted(iterable, ke..
[프로그래머스] 대문자와 소문자 🪄내가 한 solution upper() 대문자로 변환, lower() 소문자로 변환 함수 def solution(my_string): answer = '' for i in my_string: if i.isupper(): answer += i.lower() else: answer += i.upper() return answer 🪄다른사람이 한 solution def solution(my_string): return my_string.swapcase() 🪄추가로 알아야 할 것 swapcase(): 대문자와 소문자를 각각 소문자, 대문자로 변환 title(): 각 단어의 앞 글자만 대문자로 변환 Python 엄청나다... 이게 있네 싶은 것들이 이미 다 있다. 더 많이 문제 풀어보면서 새로운 함수들 많이 익..
[프로그래머스] 최빈값 구하기 🪄내가 한 solution sorted(iterable, key, reverse) iterable : 반복 가능한 iterable 자료형 입력 key : 정렬을 목적으로 하는 함수를 넣음 reverse : False(오름차순, default), True(내림차순) def solution(array): count = {} max_num = 0 # for 반복문으로 입력 list 순회 for i in array: # 딕셔너리에 현재 key가 있다면 value에 1 더하기 if i in count: count[i] += 1 # 딕셔너리에 현재 key가 할당되어 있지 않다면 1 할당 else: count[i] = 1 # 딕셔너리의 value 값 기준으로 내림차순 정렬 result = sorted(count.it..
[프로그래머스] 분수의 덧셈 🪄내가 한 solution - fractions 사용 fractions.Fraction(분자, 분모) numerator, denominator 메소드 사용 a.numerator : 분자 a.denominator : 분모 import fractions def solution(denum1, num1, denum2, num2): result = fractions.Fraction(denum1, num1) + fractions.Fraction(denum2, num2) answer = [result.numerator, result.denominator] return answer 🪄내가 한 solution - gcd 사용 math.gcd(n1, n2) 분자의 합 구하기 분모 구하기 분자와 분모의 최대공약수 구하기 분..
파이썬 최대공약수, 최소공배수 함수 - gcd, lcm 최대공약수 함수 gcd greatest common divisor import math math.gcd(n1, n2, ... ) 인자로 숫자들을 입력 0개부터 n개까지 인자로 들어온 숫자들의 최대공약수(정수)를 반환 인자가 0개인 경우 반환 값은 0. 모든 인자의 값이 0인 경우에도 반환 값은 0 gcd(0, n) = n import math print(math.gcd(3)) # 3출력 print(math.gcd(3, 6)) # 3출력 print(math.gcd(66, 22, 11)) # 11출력 최소공배수 함수 lcm least common multiple import math math.lcm(n1, n2, ... ) 인자로 숫자들을 입력 0개부터 n개까지 인자로 들어온 숫자들의 최소공배수(정수)를 반..
[백준] 2420 사파리월드 사파리월드는 인터넷으로만 존재하는 미스테리한 나라이다. 사파리월드에는 2개의 서브도메인이 seunghwan.royal.gov.sw와 kyuhyun.royal.gov.sw 이 있는데, 이것이 couple.royal.gov.sw으로 합쳐질 것이다. 그러나 도메인 관리 센터 SWNIC(센터장: 김동규)에는 엄격한 룰이 있다. 두 서브도메인을 합칠 때, 유명도의 차이가 너무 차이나지 않을 경우에만 두 서브도메인을 결혼시키는 것이다. 서브도메인의 유명도는 정수이다. 두 서브도메인의 유명도가 주어졌을 때, 그 차이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000) 출력 첫째 줄에 두 유명도의 차이 (|N-..