수학에서 집합(set)은 서로 구별되는 객체들의 모임으로, 그 자체를 하나의 객체로 취급하는 개념입니다. 예를 들어 숫자 2, 4, 6을 각각 따로 보면 서로 다른 객체이지만, 이들을 하나로 묶어 생각하면 크기가 3인 하나의 집합 {2, 4, 6}이 됩니다. 집합의 기본 연산 연산 표기법 의미 교집합(Intersection) A ∩ B A와 B 양쪽에 모두 속하는 모든 원소 합집합(Union) A ∪ B A 또는 B(혹은 둘 다)에 속하는 모든 원소 차집합(Difference) A − B A에는 속하지만 B에는 속하지
집합 이론에서 집합 A의 여집합(complement)은 A에 속하지 않는 원소들을 의미합니다. 또한 집합 B를 기준으로 한 A의 상대 여집합(relative complement)은 흔히 A와 B의 차집합이라고 불립니다. 이 글에서는 바로 이 차집합 개념을 활용하여 두 리스트 사이의 누락된 값과 추가된 값을 찾아보겠습니다.Python은 set 자료형에서 difference() 함수를 기본적으로 제공하므로, 별도의 라이브러리 설치 없이 손쉽게 구현할 수 있습니다.알고리즘 1단계 : 사용자로부터 입력받은 두 개의 리스트 A와 B를 생성한
주어진 숫자 n에 대해, 루프(반복문)를 전혀 사용하지 않고 특정 패턴의 수열을 출력하는 방법을 알아보겠습니다. 이 문제의 핵심은 재귀 함수(recursive function)를 활용하는 것입니다.여기서 구현할 패턴은 n에서 시작해 5씩 감소하여 0(또는 음수)에 도달한 뒤, 다시 5씩 증가하며 처음 값 n으로 돌아오는 수열입니다.예시입력: n = 15 출력: 15 10 5 0 5 10 15알고리즘1단계: 숫자 n을 입력받습니다.2단계: 감소 방향으로 이동하다가 목표값 n에 다시 도달하면 종료합니다.3단계: 현재 0 또는 음수 쪽으
두 개의 숫자가 주어졌을 때, 두 숫자의 이진수(binary) 표현이 서로 아나그램(anagram) 관계인지 확인하는 것이 이번 포스팅의 목표입니다. 여기서 아나그램이란, 구성 요소는 같지만 순서만 다른 경우를 의미합니다. 즉, 두 숫자의 이진 표현에 포함된 0과 1의 개수가 각각 동일하다면 두 숫자는 이진 아나그램이라고 할 수 있습니다.파이썬에서는 collections 모듈의 Counter(iterable) 메서드와 딕셔너리 비교를 활용하면 이 문제를 매우 간단하고 빠르게 해결할 수 있습니다.예시입력: a = 8, b = 16 출
26개의 알파벳 문자 집합(a~z)이 있을 때, 이와 다른 순서로 배열된 새로운 문자 집합을 사용해 두 집합 사이의 대응 관계를 만드는 작업을 해보겠습니다. 즉, 새로운 문자 집합의 각 문자를 기존 알파벳과 매핑하여 입력된 문자열을 변환하는 것이 목표입니다. 예제 새로운 문자 집합: qwertyuiopasdfghjklzxcvbnm 입력: wwmm 출력: bbzy 위 예제에서 새로운 문자 집합은 키보드 배열 순서입니다. q가 a에 해당하고, w가 b에 해당하는 식으로 순서대로 매핑됩니다. 따라서 입력 wwmm에서 w→b, m→z로
파이썬 프로그래밍에서 is 연산자와 ==(equals) 연산자는 겉보기에 비슷하게 동작하는 것처럼 보이지만, 실제로는 완전히 다른 목적을 가진 연산자입니다. == 연산자: 두 변수의 값이 서로 같은지를 비교합니다. is 연산자: 두 변수가 동일한 객체(메모리상의 같은 주소)를 가리키고 있는지를 확인합니다. 즉, ==는 내용이 같은가를 묻는 반면, is는 정말 같은 객체인가를 묻는 연산자라고 이해하면 됩니다. 예제 코드 # Python program to # illustrate the # difference between #
파이썬에서는 리스트의 최댓값과 최솟값은 물론, 그 요소가 위치한 자리까지 아주 간단하게 구할 수 있습니다. 파이썬은 이를 위한 다양한 내장 함수를 제공하는데, 핵심적인 역할을 하는 함수는 다음 세 가지입니다.핵심 내장 함수min() : 배열(리스트)에서 최솟값을 찾습니다.max() : 배열(리스트)에서 최댓값을 찾습니다.index() : 특정 요소가 저장된 인덱스(위치)를 반환합니다.알고리즘maxminposition(A, n) /* A는 사용자가 입력한 리스트이며, n은 리스트의 크기입니다. */ Step 1: 내장 함수를 사용해
개요 두 개의 문자열이 주어졌을 때, 두 문자열에 공통으로 포함된 가장 긴 부분 문자열(longest common substring)을 찾아 출력하는 것이 이번 문제의 목표입니다. 파이썬에서는 표준 라이브러리인 difflib 모듈의 SequenceMatcher.find_longest_match() 메서드를 활용하면 복잡한 알고리즘을 직접 구현하지 않고도 이 문제를 간단하게 해결할 수 있습니다. difflib.SequenceMatcher 클래스는 요소가 해시 가능(hashable)하기만 하면 문자열, 리스트 등 어떤 유형의 시퀀스 쌍
이 프로그램에서는 사용자로부터 입력받아 리스트를 생성하며, 리스트에는 홀수와 짝수가 뒤섞인 요소들이 들어 있습니다. 우리가 해야 할 과제는 이 리스트를 두 개의 리스트로 분리하는 것입니다. 하나는 홀수 요소만 담고, 다른 하나는 짝수 요소만 담습니다. 예제 입력: [1, 2, 3, 4, 5, 9, 8, 6] 출력: 짝수 리스트: [2, 4, 8, 6] 홀수 리스트: [1, 3, 5, 9] 알고리즘 1단계 : 사용자 입력으로 리스트를 생성합니다. 2단계 : 홀수 전용과 짝수 전용으로 빈 리스트 두 개를 준비합니다. 3단계 : 메
이름의 각 단어는 이니셜(첫 글자 대문자)로 줄이고, 성만은 원래 형태 그대로 출력하는 프로그램을 파이썬으로 만들어 보겠습니다. 이 과정에서는 파이썬이 기본으로 제공하는 내장 함수들을 활용합니다. 먼저 split() 함수로 입력받은 전체 이름을 공백 기준으로 나누어 리스트를 만듭니다. 다음으로 리스트를 마지막에서 두 번째 단어까지 순회하며 upper() 함수로 각 단어의 첫 글자를 대문자로 변환하고 뒤에 마침표(.)를 붙입니다. 마지막으로 성에 해당하는 리스트의 마지막 항목은 title() 함수로 첫 글자만 대문자로 바꾸어 결과 문
주어진 숫자를 이진수(binary)로 변환했을 때, 그 표현 안에서 가장 길게 연속된 1(1s)의 길이를 구하는 프로그램을 Python으로 작성해 보겠습니다.예제입력: n = 15 출력: 4 15의 이진 표현은 1111이며, 연속된 1의 최대 길이는 4입니다.알고리즘이 문제는 비트 연산(bitwise operation)을 활용하면 매우 효율적으로 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.숫자를 입력받습니다.카운터 변수 c = 0으로 초기화합니다.숫자가 0이 될 때까지 반복하며, 각 반복마다 카운터를 1씩 증가시킵니다.매
이 글에서는 파이썬의 내장 함수를 활용하여 숫자의 이진 표현이 회문(palindrome)인지 확인하는 방법을 알아봅니다. 먼저 bin() 함수를 사용해 숫자를 이진수 형태로 변환한 뒤, 이진 문자열을 뒤집어 원래 값과 비교합니다. 두 값이 일치하면 회문이고, 그렇지 않으면 회문이 아닙니다. 예시 입력: 5 출력: palindrome 설명 숫자 5의 이진 표현은 101입니다. 이를 뒤집어도 101로 원래 값과 동일하게 유지됩니다. 따라서 5는 회문입니다. 알고리즘 Palindromenumber(n) /* n은 입력받은 숫자 */
양의 정수의 비트를 반전시키는 것은 대표적인 비트 조작 문제 중 하나입니다. 파이썬에서는 내장 함수인 bin()을 사용해 숫자를 이진수 문자열로 변환한 뒤, 문자열 슬라이싱으로 비트 순서를 뒤집고, 다시 정수로 변환하는 방식으로 간단하게 해결할 수 있습니다. 구체적인 동작 과정은 다음과 같습니다. 먼저 bin() 함수로 숫자를 이진수로 변환합니다. 이때 bin()은 결과 앞에 0b 접두사를 붙이므로, 처음 두 문자를 제외한 나머지 부분을 뒤집습니다. 그다음 지정된 비트 크기(bit_size)에 맞도록 부족한 자릿수만큼 뒤에 0을 채
네트워크 프로그래밍이나 시스템 관리 작업을 하다 보면 현재 실행 중인 컴퓨터의 호스트 이름(Hostname)과 IP 주소를 확인해야 하는 경우가 자주 있습니다. Python에서는 기본 모듈인 socket만으로 이 정보를 아주 간단하게 얻을 수 있습니다.핵심 함수 살펴보기socket 모듈은 이 작업에 필요한 두 가지 함수를 제공합니다.gethostname(): 로컬 머신(현재 실행 중인 컴퓨터)의 표준 호스트 이름을 반환합니다.gethostbyname(): 호스트 데이터베이스에서 특정 호스트 이름에 대응하는 호스트 정보(IP 주소)를
Seaborn과 데이터 시각화 개요Plotly의 파이썬 그래핑 라이브러리는 온라인에서 인터랙티브하면서도 출판 수준의 고품질 그래프를 만들 수 있게 해주는 도구입니다. 이 라이브러리는 선 그래프, 산점도, 영역 차트, 막대 그래프, 오차 막대, 박스 플롯, 히스토그램, 히트맵, 서브플롯, 다중 축 차트, 극좌표 차트, 버블 차트 등 다양한 시각화에 활용됩니다.Seaborn은 파이썬에서 통계 그래픽을 손쉽게 제작하기 위한 라이브러리입니다. matplotlib을 기반으로 구축되어 있으며, pandas 데이터 구조와 자연스럽게 통합되어 있
이 글에서는 사용자가 입력한 문자열에서 특정 단어가 몇 번 등장하는지 계산하고, 그 결과를 출력하는 파이썬 프로그램을 다룹니다. 문자열 처리의 기본기를 익히기에 좋은 예제로, split() 함수와 반복문, 조건문을 활용해 문제를 해결합니다. 예제 programming 출력:: 2 위 예제에서 programming이라는 단어는 주어진 문자열 안에 두 번 등장하므로 결과값은 2가 됩니다. 알고리즘 wordoccurences(n, p) /* n은 입력 문자열, p는 등장 횟수를 셀 단어 */ 1단계: 문자열을 공백 기준으로 분리한다.
문장이 주어졌을 때 그 안에서 중복된 단어를 모두 제거하는 프로그램을 파이썬으로 작성하는 방법을 알아보겠습니다.예제입력: I am a peaceful soul and blissful soul. 출력: I am a peaceful soul and blissful.알고리즘1단계: 입력 문장을 공백을 기준으로 분리해 단어 리스트를 만듭니다.2단계: 리스트에 담긴 각 문자열을 하나의 문자열로 결합합니다.3단계: Counter 메서드로 딕셔너리를 생성합니다. 이때 단어는 키(key), 등장 빈도는 값(value)이 됩니다.4단계: 고유한 단
3D 리스트란 3차원 배열을 의미합니다. 행(row), 열(column), 깊이(depth)의 세 가지 차원으로 구성된 자료구조로, 과학 계산, 이미지 처리, 게임 개발 등 다양한 분야에서 활용됩니다. 이 글에서는 파이썬을 사용해 정수 요소를 담을 수 있는 3차원 배열을 생성하는 방법을 단계별로 살펴보겠습니다. 예제 입력: 3 × 3 × 2 [[1,1,1],[2,2,2],[3,3,3]], [[4,4,4],[5,5,5],[6,6,6]] 알고리즘 Step 1: 3D 리스트의 크기(차원)를 지정합니다. Step 2: for 반복문을
출생일(월과 일)이 주어졌을 때, 그에 해당하는 점성술 기호, 즉 별자리(Zodiac Sign)를 화면에 표시하는 것이 이 프로그램의 목표입니다. 서양 점성술에서는 태어난 날짜가 어느 별자리 구간에 속하는지에 따라 12개의 별자리 중 하나가 결정됩니다.예제입력 : Day = 13, Month = November 출력 : Scorpio (전갈자리)알고리즘프로그램의 동작 흐름은 다음 세 단계로 정리할 수 있습니다.1단계 : 생년월일(월, 일)을 입력받는다. 2단계 : 입력된 월과 일이 특정 별자리의 유효한 날짜 범위 안에 있는지 검사한
문제 개요 양의 정수 n과 반복 횟수 m이 주어졌을 때, n + nn + nnn + … 처럼 항이 진행될수록 n이 한 글자씩 이어 붙여지는 수열의 합을 구하는 것이 이 프로그램의 목표입니다.예를 들어 n = 3, m = 5라면 3 + 33 + 333 + 3333 + 33333 = 37035를 계산하게 됩니다. 알고리즘 n과 m을 입력받습니다. 숫자 n을 문자열로 변환합니다. 합계를 첫 번째 항인 n으로 초기화합니다. 문자열을 이어 붙여 nn, nnn, nnnn… 형태의 다음 항을 만듭니다. 각 항을 더하기 전에 문자열을 다시 정