Python 14

[Python] Excel 파일 암호화

1. 개요 파이썬을 사용하여 Excel 파일을 생성하거나 편집하는 작업은 많은 분들이 경험해 보셨을 겁니다. 하지만 Excel 파일 암호화를 수행한 적은 얼마나 되시나요? 물론 Excel 응용 프로그램을 통해서는 간단히 암호 설정이 가능하지만, 파이썬 코드를 사용해 이를 수행한 경우는 드물 것입니다. 따라서 이번 글에서는 파이썬 코드로 Excel 파일에 암호를 설정하는 방법에 대해 알아보겠습니다. 2. xlwings xlwings는 파이썬에서 Excel 파일을 다룰 수 있게 해주는 라이브러리입니다. 이를 활용하면 쉽게 Excel 파일 암호화를 수행할 수 있습니다. (참고) 3. 예시 코드를 작성하기 전에, 우선 xlwings 라이브러리를 설치해야 합니다. 이는 간단히 pip install xlwings ..

Language/Python 2023.11.12

[Python] 정적 타입 검사 - mypy

오늘은 파이썬 관련 정적 타입 검사에 대해서 소개하는 시간을 가져보도록 하겠습니다. 정적 타입 검사가 왜 필요한 이유 파이썬은 동적 타입 언어로 구성되어 있기 때문에 다른 언어에 비해서 유연하고 빠르게 개발을 할 수 있습니다. 그렇다면 정적 타입 검사는 왜 필요할까요? 정적 타입 검사가 필요한 이유를 알기 위해서는 동적 타입 언어의 특징에 대해서 이해를 하고 있어야 합니다. 동적 타입 언어의 특징은 크게 두 가지가 있습니다. 첫 번째는 코드가 실행될 때 타입을 체크하는 것입니다. 위 코드를 보면 if False: 부분은 실행이 되지 않기 때문에 1 + "two"가 타입 에러를 발생시키는 코드이지만 에러가 발생하지 않습니다. 두 번째는 실행 시간 동안 변수의 타입을 변경할 수 있다는 것입니다. thing ..

Language/Python 2023.07.16

[Python] *args, **kwargs

C언어를 배우신 분이라면 *을 보고 당황할 수 있다. C언어의 포인터가 생각나기 때문이다. 다행(?)이지만 파이썬에는 포인터가 존재하지 않는다. 그렇다면 *args, **kwargs가 무엇인지 알아보도록 하자. *args란? args는 arguments의 약자이고 *은 가변 인자를 표현하는 문자이다. (args 이름을 사용하지 않아도 된다) 함수를 구현하다 보면 고정된 개수의 인자가 아닌 경우가 존재한다. 이럴 때 유용하게 사용할 수 있다. # 두 개의 인자 덧셈 def add(a, b): return a + b # 여러 개의 인자 덧셈 def add(*args): total = 0 for num in args: total += num return total print(add(1, 2, 3, 4, 5))..

Language/Python 2022.07.03

[LeetCode] 3. Longest Substring Without Repeating Characters

문제 보기 [사용한 알고리즘] 슬라이딩 윈도우 (Sliding Window) [설명] 사실 문제 봤을 때 슬라이딩 윈도우 알고리즘이 떠오르지 않았다. 뭔가 풀어본 문제인데 '어떻게 풀었지?'를 5번 이상 반복했다. 결국 집합(set)과 left, right 인덱스 두 개를 활용하도록 나만의 설계를 작성한 후 코드를 구현하였다. 하지만, 구현 후 코드를 다시 확인해보니 나만의 설계가 아니라 그냥 슬라이딩 윈도우 그 자체였다. 그래도 약 2년 전에 열심히 코딩 테스트 준비하였던 경험들이 아직 머릿속에 조금은 남아있는 듯하다. 알고리즘은 크게 어렵지 않다. 문자열 s의 길이가 2미만인 경우 문자열 s의 길이를 반환한다. 문자열 s의 길이가 2이상인 경우 중복 없는 최대 부분 문자열을 찾기 위해서 반복문을 수행..

[LeetCode] 2. Add Two Numbers

문제 보기 [사용한 알고리즘] x [설명] 연결 리스트의 개념을 이해하고 있으면 크게 어렵지 않은 문제라고 생각한다. l1, l2 각 값을 더한 후 해당 값을 역순으로 저장하는 연결 리스트를 구현하면 된다. 1. l1 연결리스트 값을 추출한다. 2. l2 연결리스트 값을 추출한다. 3. 추출한 두 값을 더한다. 4. 더한 값을 역순으로 연결 리스트에 저장한다. [코드] # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def addTwoNumbers(self, l1: Optional[ListNo..

[Python] mac 경로 설정

1. 개요 Python 경로 설정을 신경 쓰지 않아서 에러를 잡는데 많은 시간을 소비한 경험이 있다. [발생 에러] python file.py parameter 코드를 실행하니 Syntax Error가 발생하였다. 처음에는 Syntax Error라서 코드에 문제가 있다고 생각하였다. 하지만, python3 버전을 설치한 후 경로 설정을 해주지 않아 python 2.x 버전이 수행되어 발생한 에러였다. [해결 방법] 1. python3 으로 코드 실행하기 2. python 경로 변경 python2 버전보다 python3 버전을 자주 사용하고 python 명령어를 수행할 때마다 3을 붙이는 것은 번거롭기 때문에 python 경로를 수정하여 위 문제를 해결하였다. 2. Python 경로 변경 2.1 Pytho..

Language/Python 2022.01.14

Python의 장점과 단점

Python은 최근 들어서 많은 사람들이 사용하고 있는 대표적인 언어 중 하나이다. 위 그림은 2020년도 12월 프로그래밍 언어들의 인기 순위인데 Python은 3위에 랭크되어 있으며 성장률이 가장 높다. Python을 사용하는 주변 사람들에게 사용하는 이유를 물어보면 대부분 배우기 쉽고, 가독성이 좋다는 이유를 말한다. 이밖에도 어떠한 장단점이 있는지 알아보도록 하자. 장점 1. 코드가 단순하고, 길이가 짧아 접근성이 좋다. 2. 쉬운 문법과 간결한 코딩으로 인해 프로그래밍에 입문하기 좋은 언어이다. 3. 운영체제에 종속되어 있지 않다. (windows나 Mac, Linux 등에 모두 무리 없이 동작한다) 4. 들여쓰기를 하지 않으면 오류를 발생시킨다. 이러한 강제적인 들여쓰기는 코드를 더 가독성 좋..

Language/Python 2020.12.12

[ 백준 14499 ] 주사위 굴리기 - Python

문제 보기 주사위 굴리기는 시뮬레이션 문제이다. 문제 구현 순서는 아래와 같다. 1. N x M 지도에서 주사위를 이동시키면서 주사위 값의 변화를 파악 2. 지도에 있는 값과 주사위의 값을 상황에 맞게 복사 - 지도에 있는 값이 0일 때 주사위의 값을 지도로 복사한다. - 지도에 있는 값이 0이 아닐 때 지도에 있는 값을 주사위로 복사하고 지도에 있는 값을 0으로 수정한다. 3. 주사위 윗 면에 쓰인 수 출력 [ 값의 변화 파악 ] 4가지 방향으로 주사위가 이동할 때 주사위의 값을 유지하면서 모양을 바꾸는 것이 핵심이었다. 아래는 주사위 이동에 대해서 정리한 표이다. 동 서 북 남 1 - >3 1 -> 4 1 -> 2 1 -> 5 2 -> 2 2 -> 2 2 -> 6 2 -> 1 3 -> 6 3 -> 1..