본문 바로가기
728x90

All150

[프로그래머스] 의상 기본 아이디어콤비네이션?아무튼 경우의수 다 구하기코드from collections import defaultdictdef solution(clothes): dic = defaultdict(int) for name, category in clothes: dic[category] += 1 total = 1 for count in dic.values(): total *= (count + 1) return total - 1defaultdict을 쓰면 dict만들때 초기에 if category in dic~이런거 체크 안 해도 된다!카테고리별 경우의 수 + 1을 해준다 (그 카테코리에서 옷을 안 고르는 경우도 하나의 경우의수로 침)마지막에 전체에서 아예 아무것도.. 2025. 4. 30.
[알뜰폰] 토스모바일 알뜰폰 통신사 토스모바일에서 다른 알뜰폰으로 갈아탈 때,기존 알뜰폰통신사를 선택해야하는데 리스트에서 도저히 토스모바일을 찾을 수 없었다.결국 토스모바일에 전화해서 알아왔다. 높은확률로 마이월드가 선택지에 있을 것임. - 토스모바일- 머천드코리아- 마이월드 아주 귀찮았다..~.. 2025. 4. 23.
[Python] 데코레이터는 언제 실행되나요? - import 최근 데코레이터는 임포트 시점에 정의된다고 배웠다.def my_decorator(func): print("데코레이터 실행됨") # 이 코드를 모듈로 저장해놓고 다른 파일에서 import를 하면 say_hello()를 호출하지 않아도 my_decorator()는 실행되어서 "데코레이터 실행됨"이 먼저 출력된다.왜 데코레이터는 함수 정의 시점에 실행될까?1. 데코레이터는 그냥 함수를 다른 함수에 넣는 문법이다.파이썬에서는 아래 두 줄을 완전히 동등하게 취급한다.@my_decoratordef say_hi(): print("hi")def say_hi(): print("hi")say_hi = my_decorator(say_hi) 따라서 데코레이터는 함수를 인자로 받아서, 가공해서 다시 반환하는.. 2025. 4. 20.
[Python] 연산자 오버로딩 연산자 오버로딩 기본 지식연산자 오버로딩은 사용자 정의 객체가 중위 연산자(ex. +, |)나 단항 연산자(ex. -, ~)를 사용할 수 있게 해줌하지만 남용되기 쉬어 파이썬에서는 아래 제한을 두어 융통성, 사용성, 안전성을 유지함 내장형의 연산자는 오버로드 할 수 없다새로운 연산자를 만들 수 없으며, 기존 연산자를 오버로드할 수만 있다.is, and, or, not 연산자는 오버로드할 수 없다. (그러나 &, |, ~ 비트 연산자는 오버로드할 수 있다.)단항 연산자__neg__()가 구현하는 -__pos__()가 구현하는 +__invert__()가 구현하는 ~+ 연산자 오버로딩 __add__(self, other)벡터 덧셈을 정의 class Vector: def __init__(self, x,.. 2025. 4. 19.
[Python] 자료형 힌트 조금 더 알아보기 오버로드된 시그니처 (@overload)@typing.overload 데코레이터는 조합된 인수들에 대해 각각 따로 타입힌트를 줄 수 있게 해준다.@overload는 정적 타입 검사기(mypy 등)가 함수 호출 시 어떤 반환값이 나오는지 알게 해줌@overload로 선언된 함수는 구현 없이 시그니처만 제공, 본문 금지! (... 또는 pass)실제 구현은 하나, 모든 타입에 대한 조합을 직접 처리해야 함from typing import overload, Union@overloaddef add(x: int, y: int) -> int: ...@overloaddef add(x: str, y: str) -> str: ...def add(x: Union[int, str], y: Union[int, st.. 2025. 4. 19.
[Python] 상속: 득과 실 super() 함수유지보수가 용이한 객체지향 파이썬 프로그래밍을 위해서는 super() 내장 함수의 일관된 사용이 절대적으로 중요상속 관계에서 부모 클래스의 메서드를 호출할 때 사용class LastUpdatedOrderedDict(OrderedDict): def __setitem__(self, key, value): super().__setitem__(key, value) self.move_to_end(key)오버라이드된 __init__() 메서드를 호출하는 것은 슈퍼클래스가 인스턴스를 초기화하는 데 필요한 일을 할 수 있게 하므로 특히 중요하다.def __init__(self, a, b): super().__init__(a, b) ... # 추가 초기화 코드특.. 2025. 4. 19.
728x90