파이썬이랑 친해지기 파이썬에서는 진법 변환을 아주 편하게 수행해주는 함수를 제공해준다. 단지 문자열을 int형으로 변경해주는줄만 알았던 int() 함수에 비밀이 있다. int함수에는 두번째 인자를 포함할 수 있는데 이는 바로 int형으로 변환하려는 문자열을 두번째 인자 n진수로 읽는다는 의미다. a = "100" b = "70" c = "0021" # 2진수: 100 -> 10진수: 4 print(int(a, 2)) # 8진수: 70 -> 10진수: 56 print(int(b, 8)) # 3진수: 0021 -> 10진수: 7 print(int(c, 3)) 따라서 위 int() 함수를 이용하여 진법 변환을 손쉽게 수행할 수 있다. 코드 def solution(n): tmp = '' while(n): tmp..
분류 전체보기
수학이랑 친해지기 최대공약수는 말 그대로 두 수의 공약수 중 최댓값을 의미한다. 두 수의 약수를 모두 구하고 공통된 약수 중 최댓값을 구하면 될 것이다. 하지만 위 과정은 뭔가 비효율적이다. 유클리드 호제법을 이용한다면 최대공약수를 간단하게 구할 수 있다 유클리드 호제법 - 최대공약수 호제법은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘이다. https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95 유클리드 호제법 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드..
파이썬이랑 친해지기 문자열을 다루는데 편리한 기능을 많이 제공한다. 기존에 알고있던 함수로 isalpha()라는 메소드를 사용하여 다음과 같은 코드를 작성했다. def solution(s): for i in s: if len(s) != 4 and len(s) != 6: return False if i.isalpha(): return False return True 위 코드는 문자열 s를 순회하는 과정을 표현하면서 약간은 보기 힘들 수도 있다. 파이썬에서 제공하는 isdiget() 함수를 이용해 보다 간결하게 표현할 수 있다. 코드 def solution(s): return s.isdigit() and len(s) in [4,6]
파이썬이랑 친해지기 파이썬에서는 수식으로 제곱을 표현할 수 있다. x ** y 는 x의 y제곱이라는 뜻이다. 이를 이용해서 제곱근도 구할 수 있다. x ** 0.5 math에 존재하는 함수인 pow()를 사용해도 동일한 효과를 가져올 수 있다. 제곱근의 경우 math에서 제공하는 sqrt() 메소드를 사용하는 방법도 존재한다. 수학이랑 친해지기 제곱근이 정수로 표현 가능한 수는 약수의 개수가 홀수개다. 따라서 다음과 같은 코드를 작성할 수 있다. 코드 def solution(left, right): answer = 0 for i in range(left, right+1): if int(i**0.5) == i**0.5: answer -= i else: answer += i return answer
파이썬이랑 친해지기 두개의 iteratable한 요소가 존재할 때 zip 함수를 이용하여 튜플 형태로 동시에 순회할 수 있다. a = [1, 2, 3, 4] b = ["a", "b", "c", "d"] for tp in zip(a, b): print(tp) # (1, 'a') # (2, 'b') # (3, 'c') # (4, 'd') 예를 들어 위처럼 zip() 함수에 두 리스트를 넣으면 튜플 형태의 iterator를 반환한다. a = [1, 2, 3] b = ["a", "b", "c", "d"] for tp in zip(a, b): print(tp) # (1, 'a') # (2, 'b') # (3, 'c') 만약 두 요소의 개수가 다르다면 더 적은 개수를 기준으로 튜플이 생성된다. 코드 def solu..
문제 solved.ac는 Sogang ICPC Team 학회원들의 알고리즘 공부에 도움을 주고자 만든 서비스이다. 지금은 서강대뿐만 아니라 수많은 사람들이 solved.ac의 도움을 받아 알고리즘 공부를 하고 있다. ICPC Team은 백준 온라인 저지에서 문제풀이를 연습하는데, 백준 온라인 저지의 문제들에는 난이도 표기가 없어서, 지금까지는 다양한 문제를 풀어 보고 싶더라도 난이도를 가늠하기 어려워 무슨 문제를 풀어야 할지 판단하기 곤란했기 때문에 solved.ac가 만들어졌다. solved.ac가 생긴 이후 전국에서 200명 이상의 기여자 분들께서 소중한 난이도 의견을 공유해 주셨고, 지금은 약 7,000문제에 난이도 표기가 붙게 되었다. 어떤 문제의 난이도는 그 문제를 푼 사람들이 제출한 난이도 의..