파이썬 61

if __name__=='__main__': - 공부하는 도비

파이썬은 작성한 코드가 위에서 아래로 한 줄씩 해석되어 실행 결과를 내놓는 인터프리터 언어입니다. 반면, C나 C++ 같은 컴파일 프로그래밍 언어는 시작점이 항상 main() 함수입니다. 파이썬의 경우, main() 함수 역할을 하는 것은 다음과 같습니다. (편의를 위해 __main__으로 표현하겠습니다.) if __name__ == '__main__': 파이썬은 소스코드를 실행할 때, 위와 같은 코드가 있으면 작성된 코드의 순서와 상관없이 저 함수 안에 작성된 코드를 먼저 실행합니다. 파이썬의 __main__함수와 C/C++의 main() 함수, 두 가지의 가장 큰 차이는 파이썬의 main은 파이썬 소스코드 파일 별로 하나씩 있을 수 있지만, C/C++의 main은 프로그램을 구성하는 소스코드 전반에 ..

Python/Python Basic 2022.11.21

hashlib의 MD5 사용 - 공부하는 도비

MD5는 "Message-Digest algorithm 5"의 약자로 1991년 만들어진 128bit 길이의 해시값을 출력하는 해시함수입니다. 자세한 내용은 아래 위키백과를 참고해주세요. https://ko.wikipedia.org/wiki/MD5 MD5 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 ko.wikipedia.org 파이썬에서 MD5 해시함수를 사용하려면 파이썬 자체에서 제공하는 hashlib 모듈의 md5나 Pycryptodome 모듈에서 제공하는 MD5를 임포트 하면 ..

Python/Project 2022.11.21

update()함수로 dictionary 업데이트 하기 - 공부하는 도비

오늘은 dictionary 자료형 함수인 update()를 알아보도록 하겠습니다. dictionary에 대한 자세한 내용은 아래 링크를 참고해주세요. 2020.06.09 - [파이썬/파이썬 이론] - [파이썬] 파이썬 Dictionary, get(), keys(), values(), items() 사용법, 파이썬 mapping type - 공부하는 도비 [파이썬] 파이썬 Dictionary, get(), keys(), values(), items() 사용법, 파이썬 mapping type - 공부하는 도비 - mapping type : mapping object는 값의 대응 관계를 표시하여 임의의 key 값으로 value를 찾습니다. 파이썬의 mapping type은 Dictionary가 유일하고, 순서..

Python/Python Basic 2022.11.21

enumerate 내장 함수로 for문 돌리 - 공부하는 도비

많은 프로그램 언어가 특정 변수(ex. i, j, k)를 증가시켜가면서 반복문을 수행합니다. 하지만, 파이썬에서는 enumerate()라는 내장 함수로 이러한 변수 없이 독특한 방식으로 반복문을 돌릴 수 있습니다. for __ in __: 가장 기본적인 for문은 for in : 형태로 작성이 됩니다. 예를 들어, 3개의 숫자를 담고 있는 리스트를 for 문으로 출력해보는 코드를 작성해보겠습니다. 해당 리스트의 인덱스도 함께 출력하고 싶을 땐 어떻게 해야할까요?. 제일 간단한 방법은 새로운 변수를 하나 두고 변수의 값을 증가시키며 출력하는 것입니다. 아마 C언어나 다른 언어를 하다가 파이썬을 하시면, 제일 먼저 떠올리는 방법 중 하나일 것 같습니다. 하지만, 프로그램이 종료되어도 변수(index)라는 값..

Python/Python Basic 2021.12.06

for 문을 사용하여 list 값 remove 할 때 주의 할 점 - 공부하는 도비

리스트에 있는 값을 for문으로 하나하나 삭제해보려고 했지만, 계속 리스트 범위를 벗어났다는 등의 오류가 났습니다. 다음 코드를 보며, 어떤 오류가 있는지 살펴보겠습니다. test = list(range(0, 10)) # test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print("original test : ", test) for i in test: test.remove(i) print(test) 해당 코드를 실행시키면, 위와 같은 결과가 나옵니다. 문제의 원인은, 첫 번째 루프 때는 test의 0번째 원소를 지우므로 리스트는 [1, 2, 3, 4, 5, 6, 7, 8, 9]가 됩니다. 두 번째 for문을 돌 때는, test의 1번째 원소(test = [1, 2, 3, 4, 5, 6..

Python/Python Basic 2021.11.08

백준 1934번 문제 풀이 - 공부 하는 도비

https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 최소 공배수를 구하는 문제입니다. 제가 예전에 유클리드 호제법에 관한 내용을 포스팅한 적이 있습니다. gcd(greatest common divisor) 즉, 최대 공약수를 구하는 방법은 아래 링크를 확인해주세요. 2021.05.21 - [파이썬/프로젝트] - [파이썬] 유클리드 알고리즘(Euclidean Algorithm) - 공부하는 도비 [파이썬] 유클리드 알고리즘(Euc..

Python/Baekjoon 2021.11.01

백준 11653번 문제 풀이 - 공부하는 도비

https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 이 문제는 입력 받은 수를 소인수분해 하는 문제이고, 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력해야 한다. 소인수분해를 못하는 사람은 없을 꺼라고 생각하고, 코드를 바로 보면 우선, 큰 while문 안에 또 다른 while문을 넣었다. 첫번째 while 조건은 입력 받은 수가 1이 될 때까지 반복문을 돌리는 것이고, 두번째 while 조건은 나누는 수(d)가 입력받은 수(a)를 나누었을 때, 나머지가 0이 되도록 d를 1씩 증가시키면서, a를 나누었을 때 나머지가 0이 될 때 까지 반복문을 돌리는 것이다. ..

Python/Baekjoon 2021.10.24

백준 5355번 문제 풀이 - 공부하는 도비

https://www.acmicpc.net/problem/5355 5355번: 화성 수학 겨울 방학에 달에 다녀온 상근이는 여름 방학 때는 화성에 갔다 올 예정이다. (3996번) 화성에서는 지구와는 조금 다른 연산자 @, %, #을 사용한다. @는 3을 곱하고, %는 5를 더하며, #는 7을 빼는 연산 www.acmicpc.net 해당 문제는 특정 문자가 들어오면, 그에 맞춰 정해진 연산을 해주는 문제입니다. - @ => 3 곱하기 - % => 5 더하기 - # => 7 빼기 예제 입력 처럼, 몇개의 문자가 들어올지 모르기 때문에 미리 변수를 선언해서 값을 입력 받는 형태는 사용할 수 없을 꺼라고 생각했다. ( ex) a, b, c = map(int, sys.stdin.readline().split()..

Python/Baekjoon 2021.10.24

백준 1032번 문제 풀이 - 공부하는 도비

https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 처음 이 문제를 봤을 때, 입력받은 정수 만큼 문자열을 저장한 후, 각 자리마다 모두 비교할 생각이었다. 하지만, 제일 처음 입력 받은 문자열과 그 다음 입력 받은 문자열을 비교 한 후, 예제 출력 처럼 미리 바꿔두면, 한번에 모든 문자열을 각 자리마다 비교하는 수고가 사라진다. 코드는 간단하다. 1. a 에 입력한 문자열을 리스트 형으로 바꾸어 저장한다. 2. 입력받은 정수(count)-1..

Python/Baekjoon 2021.10.22

백준 2839번 문제 풀이 - 공부하는 도비

문제를 크게 두 가지로 나눠야해요. 첫 번째는 3과 5의 적당한 곱으로 입력된 값을 만들어 내지 못할 때, -1 을 출력해야하고, 아닌 경우는 총 몇개의 봉지가 필요한지 계산해야 합니다. 이 문제를 푸는 방법은 1. 우선 5로 나눠떨어지면 그 몫을 출력해주면 되고, 2. 아닌 경우는 입력 된 값에 -3을 해주면서 봉지 +1 을 해주면 됩니다.(여기서 +1을 해주는 건, 3kg 봉지가 추가 된다는 뜻입니다.) 3. 위의 과정을 입력된 값이 0 이 될 때까지 진행해줍니다. 만약 입력된 값이 0이 되면, 반복문을 멈춰주면 되겠죠? 코드를 보면 쉽게 이해하실 수 있습니다.!

Python/Baekjoon 2021.08.20