_

Always be tactful

728x90

Basics (종료)/For KR 8

[IntelliJ] Ctrl + Shift + F10, Run 단축키 안 될 때

문제 상황 인텔리제이 사용 중, 실행 단축키를 눌러도 실행되지 않는다. 단축키 설정 상태를 보아도, Ctrl + Shift + F10으로 잘 설정되어 있다.해결법 원인은 '한/영' 키다. 운영체제에 따라 같은 키 조합을 사용하도록 설정되어 있으면 충돌이 발생한다. '한/영' 키를 눌러서 영어 입력기로 전환 후 다시 시도하자.

[Python] 파이썬의 전달 방식은 값 전달? 참조 전달?

파이썬의 전달 방식 정답부터 말하자면, 파이썬의 전달 방식은 call by assignment이다. 다르게는 call by object-reference 또는 call by sharing이라고 부르기도 한다. 모두 같은 의미로, 파이썬에서는 함수 호출 시 인자를 객체에 대한 참조로 전달한다는 것이다.  이해를 돕기 위해 예시를 들자면, int나 str 같은 데이터 타입의 경우 불변 객체이기 때문에 함수 내에서 값을 변경하려 해도 원래 객체에는 영향을 미치지 않게 된다. 반면, list나 set 같은 가변 객체의 경우 함수 내에서 변경을 시도하면 원래 객체도 변경된다. 즉, call by value와 call by reference가 혼합된 형태라고 이해하면 된다.객체 참조 전달 방식불변 객체 → call..

[DS] 스택, 큐, 덱

자료구조의 일종, 각기 다른 방식으로 데이터를 저장하고 관리 스택[정의] 데이터를 차곡차곡 쌓는다는 의미인 스택은 top을 통해서만 접근이 가능하기 때문에 push와 pop 모두 top에서 이루어진다. 마지막에 추가된 데이터가 가장 먼저 제거되는 후입선출(後入先出) 구조를 따른다. 물론 프로그래밍 언어와 구현에 따라 서로 다른 자료형을 혼합하는 경우도 있을 수 있지만, 일반적으로는 동일한 자료형으로 구성된다. 그래야 안정성이 보장되기 때문이다. [장점] 스택은 리스트로 구현되어 있다. 각 요소가 배열의 끝에 추가되며, 필요할 때에만 메모리가 할당되어 메모리 사용이 효율적이다. 재귀 함수 호출 시에도 스택 특유의 후입선출 구조가 자연스러운 관리를 유도한다.▲ 구현이 간단하고 메모리 사용이 효율적이다.▲ 함..

[Python] 시간 복잡도: 문자열 결합 연산 쓰지 마!

시간 복잡도 프로그래밍 언어에서 시간복잡도란 입력의 크기(N)에 따라 알고리즘이 얼마나 많은 "시간"을 소모하는지를 나타내는 척도이다. 표기법은 다양하나, 일반적으로는 O(1), O(n), O(log n), O(n^2) 등의 표기법을 사용한다.실제 코드 시간 복잡도 분석import sysN = int(sys.stdin.readline())result = ""for i in range(N // 4): result += "long "result += "int"print(result) 백준 25314번 문항을 풀며 실제 내가 제출한 코드로, 입력값 N에 따라 "long "을 N // 4번 반복해서 결과 문자열에 추가한 후, 마지막에 "int"를 붙여서 출력하는 프로그램이다. 다음은 코드를 쪼개어 각 코드..

[Python] 연결리스트: 노드가 주소를 가리킨다고?

노드 연결리스트에서 노드는 데이터의 한 단위를 의미한다. 각 노드는 메모리에서 별도의 위치를 차지하기 때문에 노드마다 고유한 메모리 주소가 할당되어 있다. 노드의 구조를 살펴보면 해당 노드가 저장한 데이터와 다음 노드를 가리키는 포인터(next) 요소를 찾아볼 수 있다.class Node: def __init__(self, data): self.data = data self.next = None 노드 생성 왼쪽 노드의 메모리 주소가 "1202243114115"이고 오른쪽 노드의 메모리 주소가 "1202243112121"이라고 가정하자. "zun"이라는 데이터를 지닌 왼쪽 노드의 포인터가 오른쪽 노드의 메모리 주소인 "1202243112121"를 저장한다면 어떨까? 두 노드가..

[Python] 배열: 인덱스의 시작은 0인가, 1인가?

배열 배열은 여러 개의 요소를 저장할 수 있는 일종의 자료구조이다. 연결된 빈칸 위의 숫자는 각각의 인덱스를 뜻하며, 우리가 흔히 알고 있는 모든 프로그래밍 언어에서 배열의 인덱스는 0부터 시작한다. 슬라이싱의 경우 마지막 인덱스에 해당하는 값은 결과에서 제외시킨다. 이해를 돕기 위해 이를 인덱싱의 "이상:미만 규칙"이라고 표현하겠다.  이러한 "이상:미만 규칙"으로 작동하는 이유는 가장 효과적이기 때문이다. 일단, 시작 인덱스를 포함하는 "이상" 구조가 시작 숫자를 직관적으로 표현해 범위의 시작을 명확히 한다. 이어서, 끝 인덱스를 포함하지 않는 "미만" 구조는 시퀀스의 연속을 표현하기 위해 불가피하면서도, 시퀀스의 길이를 직관적으로 알아낼 수 있도록 만드는 장점을 지닌다. 배열의 인덱스가 1이 아닌 ..

[Python] 주요 데이터 타입

숫자형int: 정수 값a = 10b = -29result = a + bprint(result)-19float: 부동소수점 값a = 0.0b = -10.29result = a - bprint(result)10.29complex: 복소수a = 1 + 2jb = 3 - 4jresult = a * bprint(result)(11+2j) 복소수의 허수 부분을 나타낼 때 i가 아닌 j를 사용한 이유는 파이썬에서 i는 주로 반복문에서 인덱스 변수로 많이 사용하기 때문에 혹시 모를 혼동을 줄이기 위함이다.시퀀스 자료형str: 문자열text = "Try Anything, Come True"print(text[:12])Try Anythinglist: 순서가 있고 변경 가능한 리스트languages = ["Java", "J..

[DS] 자료구조란?

자료구조 자료구조는 데이터의 조직, 관리 및 저장을 의미하는 컴퓨터 과학의 핵심 개념이다. 컴퓨터가 데이터를 효율적으로 다룰 수 있도록 돕는 총체적인 것이라고 이해하면 쉽다. 현재 많은 프로그래밍 언어와 라이브러리가 이러한 기본적인 자료구조를 따르기 때문에 자료구조를 잘 알아두어야 관련 도구들을 효과적으로 활용할 수 있다.  무엇보다, 적절한 자료구조를 선택하면 코드의 명확성이 향상되고 유지관리가 쉬워진다. 이는 데이터의 의도된 용도와 데이터에서 수행되는 작업을 명확히 할 수 있다는 의미이다. 다양한 자료구조는 검색, 삽입, 삭제 등 다양한 작업에 최적화될 수 있으며, 최종적으로는 데이터의 효율적인 처리로 알고리즘의 성능이 크게 향상할 수 있다.

728x90