텐서플로우(TensorFlow)란 무엇인가?텐서플로우는 구글(Google)이 제공하는 대표적인 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, 파이썬(Python)과 함께 사용해 다양한 알고리즘과 딥러닝 애플리케이션을 손쉽게 구현할 수 있습니다.텐서플로우는 연구 목적과 실제 서비스(프로덕션) 환경 모두에서 폭넓게 활용됩니다. 복잡한 수학 연산을 빠르게 처리할 수 있는 최적화 기법을 갖추고 있는데, 이는 내부적으로 NumPy와 다차원 배열을 사용하기 때문입니다. 이러한 다차원 배열을 바로 텐서(tensor)라고 부릅니다.텐서플
이진 트리(binary tree)에서 각 노드는 왼쪽 자식과 오른쪽 자식, 두 개의 자식 노드를 가질 수 있습니다. 어떤 이진 트리가 주어졌을 때 그 트리가 균형 상태인지 확인해야 하는 경우가 종종 있습니다. 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 1 이하일 때, 그 이진 트리를 균형 트리(height-balanced tree)라고 합니다.예시입력-1출력True설명주어진 이진 트리는 [1, 2, 3, NULL, NULL, 6, 7]입니다. 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 1이므로 높이 균형 트리입니다.입력-2출
2차원 행렬에서 각 칸(cell)의 위치는 왼쪽, 오른쪽, 위, 아래 네 방향으로 분석할 수 있습니다.너비 우선 탐색(Breadth First Search, BFS)은 주어진 2차원 행렬에서 두 요소 사이의 최단 거리를 찾는 알고리즘입니다. 즉, 각 칸에서 수행할 수 있는 이동은 네 가지이며, 이를 다음과 같은 숫자 값으로 표현할 수 있습니다.2: 해당 칸이 출발지(Source)임을 나타냅니다.3: 해당 칸이 목적지(Destination)임을 나타냅니다.1: 해당 칸으로 이동할 수 있으며, 그 방향으로 계속 진행 가능함을 나타냅니다
연결 리스트(Linked List)는 각 노드가 두 개의 블록으로 구성된 선형 자료구조입니다. 하나의 블록에는 노드의 값 또는 데이터가 저장되고, 다른 블록에는 다음 노드의 주소가 저장됩니다.이번 문제에서는 각 노드가 리스트 내의 다른 노드를 가리키는 랜덤 포인터(random pointer)를 가지고 있는 연결 리스트를 가정합니다. 이러한 원본 리스트와 동일한 구조를 가진 새로운 리스트를 만드는 작업을 수행해야 하며, 랜덤 포인터까지 그대로 복제하는 과정을 연결 리스트의 깊은 복사(Deep Copy)라고 부릅니다.예시입력:5->
문제 개요두 문자열 a와 b가 주어지고, 결과를 담을 문자열 merge가 있다고 가정해 봅시다. 목표는 아래 규칙에 따라 a와 b의 문자를 하나씩 옮겨 merge를 채우는 것입니다.문자열 a가 비어 있지 않으면, a의 첫 번째 문자를 제거해 merge에 추가합니다.문자열 b가 비어 있지 않으면, b의 첫 번째 문자를 제거해 merge에 추가합니다.두 문자열이 모두 비어 있지 않은 경우에는 사전순(lexicographical)으로 더 큰 문자열에서 먼저 문자를 가져옵니다. 즉, a가 b보다 크면 a에서, 그렇지 않으면 b에서 첫 문자
세 개의 숫자가 있다고 가정해 봅시다. 이때 과제는 이 숫자들을 모두 0으로 만들기 위해 필요한 최적의 단계 수를 구하는 것입니다.예시입력:a = 4 b = 4 c = 6출력:7설명모든 숫자를 0으로 만드는 데 필요한 총 단계 수는 다음과 같습니다.(4, 4, 6) → 1번째와 2번째 숫자에서 1 감소 = (3, 3, 6) → 1번째와 3번째 숫자에서 1 감소 = (2, 3, 5) → 1번째와 3번째 숫자에서 1 감소 = (1, 3, 4) → 1번째와 3번째 숫자에서 1 감소 = (0, 3, 3) → 2번째와 3번째 숫자에서 1 감
표현식 트리(Expression Tree)란? 표현식 트리는 이진 트리의 한 종류로, 리프 노드(단말 노드)에는 연산 대상이 되는 값, 즉 피연산자가 저장되고 내부 노드에는 해당 값들에 적용할 연산자가 저장됩니다. 완성된 트리를 순회하면 원래의 수식을 그대로 복원할 수 있습니다. 예시: 4 + ((7 + 9) * 2)를 표현식 트리로 나타내면 다음과 같습니다. 문제 해결 접근 방식 후위 표기식(postfix)으로 주어진 표현식의 트리를 구성할 때는 일반적으로 스택(Stack) 자료구조를 활용합니다. 표현식을 순회하면서 다음 단계를
정규식(regex)으로 수행할 수 있는 대표적인 연산은 두 가지입니다. 하나는 search(검색)이고, 다른 하나는 match(매칭)입니다. 문자열에서 특정 패턴을 찾거나 패턴과 일치 여부를 확인할 때, 이 두 함수를 적절히 활용하면 정규식을 훨씬 효율적으로 사용할 수 있습니다. match()와 search()의 핵심 차이 하나의 문자열이 주어졌다고 가정해 보겠습니다. regex match()는 오직 문자열의 시작 부분에서만 패턴을 확인하는 반면, regex search()는 문자열 전체 어디에서든 패턴을 찾습니다. 또한 match
이 글에서는 products.csv 파일에서 데이터를 읽어온 뒤, 행(row)과 열(column)의 개수를 출력하고, 처음 10개 행 중에서 product 열의 값이 Car와 일치하는 데이터만 필터링하여 출력하는 방법을 알아봅니다.문제 정의다음과 같은 products.csv 파일이 있다고 가정해 보겠습니다. 이 파일에서 행과 열의 개수를 구하고, 첫 10개 행에서 product 열 값이 Car인 데이터를 추출하면 결과는 아래와 같습니다.Rows: 100 Columns: 8 id product engine avgmileage pric
문제 소개이 튜토리얼에서는 products.csv 파일을 대상으로, price(가격) 열의 값이 30,000에서 70,000 사이인 행을 찾고, 그중 마지막 세 개 행의 id와 product 열만 출력하는 파이썬 코드를 작성하는 방법을 알아봅니다. 서로 다른 접근 방식을 가진 두 가지 해결 방법을 단계별로 살펴보겠습니다.먼저 실습에 사용할 products.csv 파일을 준비합니다.가격 조건(30,000~70,000)에 맞는 데이터 중 마지막 세 행의 id와 product 열을 출력하면 다음과 같은 결과를 얻을 수 있습니다. i
이 글에서는 파이썬에서 리스트(List)와 튜플(Tuple)의 차이점을 자세히 알아보겠습니다.리스트와 튜플은 파이썬에서 가장 많이 사용되는 두 가지 대표적인 데이터 구조입니다. 둘 다 여러 개의 데이터를 하나의 변수에 저장할 수 있다는 공통점이 있지만, 몇 가지 중요한 차이점이 있습니다.리스트(List)란?리스트는 시퀀스(sequence)라고도 불리며, 파이썬에서 가장 자주 사용되는 데이터 타입 중 하나입니다. 다양한 용도로 활용할 수 있는 유연성이 큰 장점입니다.리스트는 모든 요소를 대괄호 [ ] 안에 넣고, 각 요소를 쉼표(,)
이 글에서는 Python의 Tkinter 라이브러리를 활용해 이동하는 물체의 평균 속도를 계산하는 GUI 기반 애플리케이션을 만드는 방법을 소개합니다.평균 속도는 다음 공식을 사용하여 계산할 수 있습니다.평균 속도 = 거리 / [시간 + (분/60)]사용자 입력값을 받기 위해 특정 범위의 값을 선택할 수 있는 SpinBox(스핀박스) 위젯을 사용합니다. 입력 항목은 총 세 가지로, 거리(Km), 시간(Hours), 분(Minutes)입니다.전체 예제 코드from tkinter import * # Tkinter 프레임 인스턴스 생성
Tkinter는 파이썬에서 GUI 기반 애플리케이션을 개발할 때 가장 널리 사용되는 표준 라이브러리입니다. 다양한 함수와 메서드를 제공하여 애플리케이션 개발 과정에서 확장성과 여러 기능을 손쉽게 구현할 수 있습니다.이 글에서는 Tkinter의 cursor 속성을 활용하여 버튼 위에 마우스를 올렸을 때(호버링) 마우스 커서 모양을 변경하는 방법을 알아보겠습니다. Tkinter의 버튼 라이브러리에는 다양한 커서 맵이 내장되어 있어, 사용자에게 여러 가지 시각적 효과를 제공할 수 있습니다.라이브러리에서 제공하는 대표적인 커서 종류는 다음
Tkinter는 파이썬에서 데스크톱 애플리케이션을 만들 때 가장 널리 사용되는 표준 GUI 라이브러리입니다. 다양한 메서드와 함수를 제공하여 버튼, 라벨, 입력창 등 여러 기능을 손쉽게 애플리케이션에 추가할 수 있습니다.그중 tkcalendar는 Tkinter의 확장 패키지 중 하나로, 윈도우 안에 GUI 기반의 캘린더를 생성할 수 있게 해줍니다. 이 패키지를 활용하면 날짜 선택은 물론, 일정 조회나 이벤트 예약 같은 다양한 작업을 캘린더 애플리케이션을 통해 수행할 수 있습니다.이번 글에서는 tkcalendar 패키지를 사용해 날짜
내비게이션은 모든 애플리케이션에서 가장 중요한 요소입니다. 잘 설계된 내비게이션은 사용자 경험을 한층 아름답고 직관적으로 향상시켜 줍니다. Tkinter를 활용하면 메뉴와 하위 메뉴를 매우 효율적으로 구현할 수 있습니다.Tkinter에는 메뉴를 생성하는 기본 함수가 내장되어 있으며, 이는 다른 tkinter 위젯이나 창과 함께 호출할 수 있습니다. Tkinter.Menu 모듈은 메뉴 항목(Menu-item)에 다양한 속성을 제공합니다. 이러한 속성 중 일부는 버튼에 레이블을 지정하거나, 버튼 상태를 토글하거나, cascade 속성을
Tkinter란 무엇인가?Tkinter는 파이썬으로 GUI 기반 애플리케이션을 개발할 때 가장 널리 사용되는 표준 라이브러리입니다. 버튼, 레이블, 입력창 같은 다양한 위젯을 손쉽게 추가할 수 있으며, 창의 크기나 스타일 등 필요한 속성들도 자유롭게 설정할 수 있습니다.overrideredirect 메서드로 프레임리스 창 구현하기타이틀 바와 테두리가 없는 깔끔한 창을 만들고 싶다면 overrideredirect 메서드를 활용하면 됩니다. 이 메서드를 호출하면 운영체제가 제공하는 기본 창 장식, 즉 닫기 버튼, 제목 표시줄, 최소화
Python은 기능적이고 실용적인 데스크톱 애플리케이션을 개발하는 데 가장 널리 사용되는 프로그래밍 언어 중 하나입니다. 다양한 모듈과 풍부한 라이브러리를 제공하기 때문에 확장성이 뛰어나며, 누구나 비교적 쉽게 애플리케이션을 만들고 개발할 수 있습니다.그중에서도 Tkinter는 GUI 기반 애플리케이션을 만들 때 가장 많이 사용되는 대표적인 라이브러리입니다. 버튼, 라벨 같은 위젯 추가부터 창 크기 설정 등 GUI 구성에 필요한 다양한 속성과 기능을 지원합니다.투명한 창 만들기Tkinter로 투명한 창을 만들고 싶다면 attribu
Python은 GUI 기반 애플리케이션을 개발할 수 있는 풍부한 라이브러리를 다수 제공합니다. 그중에서도 Tkinter는 Python으로 GUI 애플리케이션을 만들 때 가장 널리 사용되는 라이브러리 중 하나로, 위젯 추가를 비롯해 애플리케이션 제작에 필요한 다양한 기능과 속성을 지원합니다. 버튼(Button)은 특정 작업이나 이벤트에 할당할 수 있는 대표적인 위젯입니다. 버튼의 크기나 위치를 동적으로 조정하려면 Tkinter의 Grid 모듈을 사용해 레이아웃을 구성하면 됩니다. 특히 rowconfigure()와 columnconfi
사용자로부터 텍스트 입력을 받아 새로운 텍스트 파일로 저장하고, 그 결과를 검증하는 GUI 기반 Python Tkinter 애플리케이션이 있다고 가정해 보겠습니다. 저장된 파일에는 사용자가 입력한 텍스트가 그대로 담기며, 우리는 이 파일을 열어 사용자 입력이 올바르게 처리되었는지 확인할 수 있습니다.기능 테스트(Functional Testing)란?기능 테스트에서는 주로 백엔드 API, 데이터베이스, 사용자와 서버 간의 통신, 입출력(Input/Output) 등에 초점을 맞춥니다. 즉, 애플리케이션이 요구사항에 따라 의도한 대로 동
파이썬으로 GUI 애플리케이션을 개발할 때 가장 널리 쓰이는 라이브러리 중 하나가 바로 Tkinter입니다. Tkinter는 다양한 메서드와 함수를 제공해 애플리케이션에 여러 기능을 손쉽게 추가할 수 있으며, 버튼·라벨 같은 기본 위젯은 물론 대화 상자(Dialog Box)까지 자유롭게 구현할 수 있습니다.이 글에서는 화면에 팝업으로 띄워 정보를 보여 주고, 사용자가 옵션을 선택하도록 만드는 간단한 메시지 박스(Message Box)를 구현하는 방법을 알아봅니다.메시지 박스 예제 코드# 필요한 라이브러리 불러오기 from tkint