_

Always be tactful

OLD/Legacy 26

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

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

OLD/Legacy 2024.12.03

[GitHub] 최근 커밋 완전히 삭제하기

모든 과정은 터미널을 열어 Git 명령어를 입력함으로써 진행됩니다. 로컬 저장소에서 커밋 삭제하는 방법부터 원격 저장소에 반영하기까지의 내용입니다.커밋만 삭제하고 변경 사항 유지git reset HEAD^ 최근 1개의 커밋을 삭제git reset HEAD~n 최근 n개의 커밋을 삭제 커밋과 변경 사항 모두 삭제git reset --hard HEAD^ 최근 1개의 커밋을 삭제 git reset --hard HEAD~n 최근 n개의 커밋을 삭제 브랜치 확인 및 원격 저장소 반영git branch 현재 작업 중인 브랜치 이름을 모른다면 위 Git 명령어를 통해 확인하실 수 있습니다.git push origin main --force 만약 main 브랜치가 아니라면 main 대신 해당 브랜치 이름을 입력해 주시..

OLD/Legacy 2024.11.30

[DS] 스택, 큐, 덱

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

OLD/Legacy 2024.11.26

[Python] 백준 11718번: EOFError가 발생하지 않는다고?

sys.stdin.readline()은 빈 문자열을 반환한다!import syswhile True: try: userInput = sys.stdin.readline().strip() print(userInput) except: break EOFError(End of File)는 파일의 끝, 즉 입력의 끝을 의미한다. input()은 파일의 끝에서 EOFError를 발생시키지만, sys.stdin.readline()은 빈 문자열을 반환하므로 EOFError를 발생시키지 않는다. 따라서 출력 초과로 인한 오답 처리가 되는 것이다.while True: try: print(input()) except: break 물론 이렇게 간..

OLD/Legacy 2024.11.23

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

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

OLD/Legacy 2024.11.12

[Python] 백준 10809번: find()는 인덱스만 반환하는가?

문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.baekjoon 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 ..

OLD/Legacy 2024.11.09

[Python] 백준 3052번: "{}"은 집합? 딕셔너리?

빈 리스트 생성의 경우 리스트에 어떠한 값을 추가할 예정이라고 하더라도, 프로그램이 정상적으로 작동하기 위해서는 해당 리스트를 미리 생성해 초기화해 놓아야 한다. 파이썬에서 빈 리스트는 기본적으로 "[]"을 입력해 생성한다. 아래 두 코드들은 실제로 내가 백준 문제를 풀며 리스트를 초기화한 사례이다.# https://www.acmicpc.net/problem/10871import sysN, X = map(int, sys.stdin.readline().split())A = list(map(int, sys.stdin.readline().split()))less_than = []for i in A: if i # https://www.acmicpc.net/problem/2562import sysinputs..

OLD/Legacy 2024.11.02