Python 30

[이것이 취업을 위한 코딩테스트다] 구현: 시뮬레이션과 완전 탐색

구현(Implementation)머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 지칭알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제적절한 라이브러리를 찾아서 사용해야 하는 문제완전탐색 : 모든 경우의 수를 주저 없이 다 계산하는 해결 방법시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행일반적으로 알고리즘 문제에서의 2차원 공간은 행렬(Matrix)의 의미로 사용 상하좌우여행가 A는 N x N 크기의 정사각형 공간에 서 있습니다. 이 공간은 1 x 1 크기의 정사각형으로 나누어져 있습니다. 가장 왼쪽 위 좌표..

Python/CodingTest 2023.01.16

파이썬 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의 길이 ≤ 10bin1과 bin2는 0과 1로만 이루어져 있습니다.bin1과 bin2는 "0"을 제외하고 0으로 시작하지..

Python/공부 2023.01.07

[프로그래머스] 가까운 수

🪄내가 한 solutionarray의 인덱스와 값으로 부터 [인덱스, |값 - 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, k..

[프로그래머스] 대문자와 소문자

🪄내가 한 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

최대공약수 함수 gcdgreatest common divisorimport mathmath.gcd(n1, n2, ... )인자로 숫자들을 입력0개부터 n개까지인자로 들어온 숫자들의 최대공약수(정수)를 반환인자가 0개인 경우 반환 값은 0. 모든 인자의 값이 0인 경우에도 반환 값은 0gcd(0, n) = nimport mathprint(math.gcd(3)) # 3출력print(math.gcd(3, 6)) # 3출력print(math.gcd(66, 22, 11)) # 11출력 최소공배수 함수 lcmleast common multipleimport mathmath.lcm(n1, n2, ... )인자로 숫자들을 입력0개부터 n개까지인자로 들어온 숫자들의 최소공배수(정수)를 반환인자가 0개인 경우 반환 값은 ..

Python/공부 2023.01.05

[백준] 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-..

Python/백준 2023.01.04

[백준 - 구현] 1009 분산처리

재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다.1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... ,10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ...총 데이터의 개수는 항상 ab개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라. 입력입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a..

Python/백준 2023.01.04

[백준] 1920 수 찾기

N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 시간 제한 1초 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 💡문제 해결 아이디어 알고리즘에 이분탐색이 있지만 후에 알고리즘 공부 후 다시 해당 방법으로 풀 예정 이번에는 간단하게 set으로..

Python/백준 2023.01.03