Python 74

[Python][백준] 2839_설탕 배달 (3가지 풀이방법)

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 더보기 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로..

[Python][Programmers] 기초문제_12915, 12910, 12906

- [12915] 문자열 내 마음대로 정렬하기 def solution(strings, n): strings.sort() li = sorted(strings, key = lambda x : x[n]) return li ### Idea: n번째인덱스 문자 + strings 를 정렬한 뒤에 1~ 문자열을 가져오는 방법 --> sorted(str, key=lambda x : 정렬기준) 을 통해 정렬 기준을 설정할 수 있음 - [12910] 나누어 떨어지는 숫자 배열 def solution(arr, divisor): answer = list(filter(lambda x : x%divisor == 0, arr)) answer = [-1] if len(answer) == 0 else answer return sort..

[Python][Programmers] 기초문제_12921, 12919, 12918, 12917, 12916

- [12921] 소수 찾기 def solution(N): li = [True for _ in range(2, N+1)] for idx, val in enumerate(li): i = idx+2 if val == False : continue for j in range(2,N): if i*j > N: break li[i*j-2] = False answer = filter(lambda x: x == True, li) return len(list(answer)) -> 에라토스테네스의 체 +++ 다른 사람 풀이 참고 def solution(N): nums = set(range(2, N+1)) for n in range(2, N+1): if n in nums: nums -= set(range(n*2, N+1, ..

소수 판별 알고리즘 (에라토스테네스의 체)

소수 (Prime Number) 란, 1과 자기 자신으로만 나누어지는 숫자 (단, 1은 소수가 아님) (1) 특정 N 이 주어졌을 때, 이 숫자가 소수인지 아닌지 판별하기 : N이 n * m (n N: break li[i*j-2] = False answer = filter(lambda x: x == True, li) return len(list(answer)) [참고] velog.io/@koyo/python-is-prime-number [내가 보려고 적는 파이썬] 소수 판별(에라토스테네스의 체) 소수를 판별하는 방식에 대해 정리해보았다. 다양한 수를 판별하는 경우에 활용할 수 있는 에라토스테네스의 체도 알아두자. velog.io

[Python][Programmers] 기초문제_12930, 12928, 12926, 12925, 12922

- [12930] 이상한 문자 만들기 def solution(s): isUpper = False li = list(s) for i in range(len(li)) : isUpper = not isUpper if s[i] != ' ' else False li[i] = li[i].upper() if isUpper else li[i].lower() return ''.join(li) --> str.lower() 소문자 || str.upper() 대문자 - [12928] 약수의 합 def solution(n): li = filter(lambda x: n%x == 0, list(range(1,n+1))) return sum(li) --> filter로 약수찾기 - [12926] 시저 암호 def solution(s..

[Python] 4_클래스

- 파이썬 클래스 기초 (생성자, 메소드, 클래스변수, 상속) # class # pass는 아무것도 수행하지 않는 문법. 임시 코드 class Sample: pass # Constructor (__init__) # 객체 생성시에 자동 호출 class Sample: def __init__(self, a, b): # self == 객체 자신/ #setdata 기능 self.a = a self.b = b # Method class Sample: def setdata(self, a, b): self.a = a self.b = b ### 사용 sample = Sample() sample.setdata(1, 2) # Use1 Sample.setdata(sample, 1, 2) # Use2 # sample.a == ..

Language/Python 2021.05.06

[Python][Programmers] 기초문제_12934, 12933, 12903, 12932, 12931

- [12934] 정수 제곱근 판별 import math def solution(n): answer = pow(math.sqrt(n)+1,2) if math.sqrt(n)%1 == 0 else -1 return answer --> math 모듈의 sqrt 함수 : 제곱근 구하기 / pow 함수 : 제곱 구하기 - [12933] 정수 내림차순으로 배치하기 def solution(n): # answer = list(str(n)) # answer.sort() # answer.reverse() # print(''.join(answer)) # answer = int(''.join(answer)) ### 간단히 answer = list(str(n)) answer.sort(reverse = True) answer =..

[Python] 파이썬에서 음수의 "//" 연산(Floor Division) 이 다른 값을 가지는 이유

파이썬(3.X)에서 / 나누기 연산은 float 결과값, //나누기 연산은 int 결과값을 가지는 차이가 있다고 생각하고 있었는데 음수에서 해당 연산을 사용했을 때, 다음과 같이 다른 결과가 나오는 것을 발견했다. print(-1//2)# >>> -1 print(1//2)# >>> 0 이유를 찾아보니, "//" 연산은 Floor Division(바닥함수)로 "실수 이하의 최대 정수를 구하는 함수" 로 정의된다. ==> 내림(round down) 즉, -1 < -1/2(=-0.5) < 0 이기 때문에 -0.5보다 작은 최대 정수인 -1 을 결과값으로 가진다. [참고]stackoverflow.com/questions/37283786/floor-division-with-negative-number Floor ..

Language/Python 2021.05.06

[Python] 파이썬에서 제곱 구하기-pow(), math.pow(), ** 의 차이

먼저 내장함수 pow() 와 math.pow() 는 다음과 같이 다른 함수임을 알 수 있다. import math print(pow is math.pow) # >>> False 파이썬에서 제곱을 구하는 세가지 방법의 차이를 비교해보자. 1. 내장함수 pow(base, exp [, mod] ) [특징 1] 밑, 지수, (옵션: 나머지계산) 을 파라미터로 받을 수 있다. --> math.pow에서는 세번째 옵션 파라미터를 받을 수 없다. --> pow(base, exp, mod) 로 쓰였을 때, 결과는 (base ** exp) % mod 와 동일하다. (단, 이때 base, exp는 정수형이어야함) [특징 2] pow의 결과값은 파라미터의 type에 따라 결정된다. print(pow(12,2))# >>> 1..

Language/Python 2021.05.06

[Python][Programmers] 기초문제_12969, 12954, 12948, 12947, 12947

- [12969] 직사각형 별찍기 # a, b = input().split() # str = "*" * int(a)+'\n' # str = str * int(b) ### int로 입력받기 a, b = map(int, input().split()) str = ('*'*a + '\n')*b print(str) - [12954] x만큼 간격이 있는 n개의 숫자 def solution(x, n): ### 풀이1 # answer = [x] # while n-1: # answer.append(answer[-1] + x) # n=n-1 ### 풀이2 answer = [x * (i+1) for i in range(n)] return answer - [12948] 핸드폰 번호 가리기 def solution(phone_n..