Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python

  1. Python에서 이진 문자열을 교대 문자열로 만들기 위한 최소 비트 변경 횟수 구하기

    문제 개요이진 문자열 s가 주어졌다고 가정해 봅시다. 한 번의 연산으로 특정 위치의 비트 하나를 뒤집을 수 있으며, 인접한 두 문자가 서로 같지 않은 문자열을 교대 문자열(alternating string)이라고 합니다. 우리가 구해야 할 것은 문자열 s를 교대 문자열로 만들기 위해 필요한 최소 연산 횟수입니다.예를 들어 입력이 s = "11100011"이라면 출력은 3이 됩니다. 인덱스 1, 4, 7의 비트를 뒤집으면 "10101010"이 되어 모든 문자가 교대 형태를 이루기 때문입니다.접근 방

  2. Python으로 N-ary 트리 복사본 만들기 – BFS 기반 완전 복제 방법

    루트 노드가 root로 주어지는 N-ary 트리(n-ary tree)가 있다고 가정해 보겠습니다. 우리가 해야 할 일은 이 트리 전체의 복사본을 만든 뒤, 원본 트리와 복사된 트리 두 개 모두에 대해 전위 순회(preorder traversal)를 수행하는 것입니다. 복사본 트리는 반드시 별도의 새로운 루트 노드를 사용하여 저장해야 합니다. 트리 노드의 구조는 다음과 같습니다. Node: value : <integer> children : <array> 예를 들어 입력이 다음과 같다면 출력은

  3. Python으로 N-ary 트리의 루트 노드를 찾는 프로그램

    배열 형태로 N-ary 트리(다진 트리)의 노드들이 주어졌다고 가정해 봅시다. 이때 트리를 재구성하여 루트 노드를 찾아 반환해야 합니다. 그리고 반환된 루트 노드로부터 전체 트리를 전위 순회(preorder) 방식으로 출력하면 됩니다. 예를 들어 입력이 다음과 같다고 해보겠습니다. 그렇다면 출력은 다음과 같습니다. [14, 27, 32, 42, 56, 65] 찾은 루트 노드를 기준으로 트리의 전위 순회(preorder traversal)를 수행하기 때문에, 최종 출력값은 트리의 전위 순회 결과가 됩니다. 문제 해결 접근 방법 이

  4. 파이썬으로 n-ary 트리의 지름 구하기

    n-ary 트리가 주어졌을 때, 이 트리의 지름(diameter)을 구하는 문제를 생각해 봅시다. 여기서 트리의 지름이란 트리 내 임의의 두 리프 노드 사이에 존재하는 가장 긴 경로를 의미하며, 우리는 이 지름을 나타내는 정수 값을 계산하여 반환해야 합니다.문제 예시예를 들어 아래와 같은 트리가 입력으로 주어진다고 가정해 보겠습니다.이 경우 출력은 3이 됩니다.이 n-ary 트리의 지름은 27→14, 14→42, 그리고 42→56 또는 42→65로 이어지는 간선들로 구성됩니다(다이어그램에서 빨간 선으로 표시된 부분). 해당 경로의

  5. 파이썬으로 배열의 최댓값 인덱스 찾기 – compare()만 사용하는 이진 탐색 풀이

    문제 정의 외부 클래스에서 직접 접근할 수 없는 비공개 배열을 담고 있는 TestArray 클래스가 하나 주어져 있습니다. 이 클래스는 오직 두 개의 공개 메서드만 제공합니다. length() – 배열의 길이를 반환합니다. compare(l, r, x, y) – 네 개의 인덱스를 인자로 받아 두 구간의 합을 비교한 결과를 반환합니다. compare() 메서드의 동작 방식은 다음과 같습니다. (array[l] + array[l+1] + … + array[r]) > (array[x] + array[x+1] + … + arra

  6. 파이썬(Python)으로 숨겨진 배열에서 가장 빈번한 요소의 인덱스 찾기

    문제 개요 TestArray라는 클래스가 주어졌다고 가정해 봅시다. 이 클래스는 0 또는 1의 값만 담을 수 있는 비공개(private) 배열을 내부에 가지고 있으며, 외부에서는 두 개의 공개(public) 멤버 함수인 length()와 query()만 사용할 수 있습니다. length(): 배열의 길이를 반환합니다. query(p, q, r, s): 네 개의 인덱스를 입력받아 해당 위치의 값들을 비교한 결과를 반환합니다. query() 함수는 네 개의 값 p, q, r, s를 입력으로 받으며, 다음 규칙에 따라 세 가지 값을

  7. 파이썬으로 같은 위치에서 한 글자만 다른 문자열 쌍 찾는 프로그램 구현하기

    길이가 모두 같은 여러 개의 문자열로 이루어진 배열이 주어졌다고 가정해 보겠습니다. 이때 주어진 문자열 중 임의의 두 문자열이 같은 위치에서 단 한 글자만 다른 경우가 존재하는지 확인해야 합니다. 그러한 차이가 존재하면 True를 반환하고, 존재하지 않으면 False를 반환하면 됩니다.예를 들어 입력이 dict = [pqrs, prqs, paqs]와 같다면 출력은 True가 됩니다. 세 문자열이 모두 인덱스 1(두 번째 자리)에서 서로 다르기 때문입니다. 따라서 어떤 두 문자열을 골라 비교하더라도 동일한 위치에서 차이가 발생합니다.

  8. Python으로 창고에 넣을 수 있는 상자 개수 구하는 프로그램

    문제 개요정수로 이루어진 두 개의 배열이 있다고 가정해 보겠습니다. 하나는 단위 폭을 가진 상자들의 높이 목록이고, 다른 하나는 창고(godown)를 이루는 각 방의 높이 목록입니다. 방은 0부터 n까지 번호가 매겨져 있으며, 각 방의 높이는 godown 배열의 해당 인덱스에 저장되어 있습니다. 이때 창고에 밀어 넣을 수 있는 상자의 개수를 구하는 것이 과제입니다.단, 다음 세 가지 조건을 반드시 기억해야 합니다.상자는 서로 위에 쌓을 수 없습니다.상자를 넣는 순서는 자유롭게 변경할 수 있습니다.상자는 왼쪽에서 오른쪽 방향으로만 넣

  9. Python으로 두 개의 희소 벡터 내적(Sparse Vector Dot Product) 구하기

    문제 개요두 개의 희소 벡터(sparse vector)가 리스트 형태로 주어졌을 때, 두 벡터의 내적(dot product)을 계산하여 반환하는 프로그램을 작성해 보겠습니다. 여기서 벡터는 객체로 표현되며, 각 벡터의 요소들은 객체의 멤버 변수 nums에 저장됩니다.예를 들어 입력이 다음과 같다고 가정해 봅시다.vector1 = [1, 0, 0, 0, 1]vector2 = [0, 0, 0, 1, 1]이때 출력은 1입니다. 내적은 각 위치의 요소끼리 곱한 뒤 모두 더한 값으로, 다음과 같이 계산됩니다.1 × 0 + 0 × 0 + 0

  10. Python으로 창고에 넣을 수 있는 상자 개수를 구하는 프로그램

    문제 설명 정수로 이루어진 두 개의 배열이 있다고 가정해 보겠습니다. 하나는 단위 폭을 가진 상자들의 높이를 담고 있고, 다른 하나는 창고(godown) 안에 있는 방들의 높이를 담고 있습니다. 방은 0부터 n까지 번호가 매겨져 있으며, 각 방의 높이는 godown 배열의 해당 인덱스에 저장되어 있습니다. 우리가 구해야 하는 값은 창고에 밀어 넣을 수 있는 상자의 개수입니다. 이때 다음 조건들을 유의해야 합니다. 상자를 서로 위에 쌓을 수는 없습니다. 상자를 넣는 순서는 자유롭게 바꿀 수 있습니다. 상자는 왼쪽이나 오른쪽 어느

  11. Tkinter에서 Matplotlib 그래프를 그리는 방법

    파이썬(Python)은 머신러닝과 데이터 사이언스 분야에서 가장 널리 활용되는 언어 중 하나입니다. 데이터를 시각화하고 그래프로 표현할 때는 주로 Matplotlib 라이브러리를 사용합니다.Tkinter 애플리케이션 안에서 Matplotlib 그래프를 그리려면 먼저 import matplotlib.pyplot as plt 구문으로 라이브러리를 불러와야 합니다. 이후 원하는 값의 범위를 직접 정의하거나, 노트북에 저장된 데이터셋을 가져오는 방식으로 플롯을 손쉽게 작성할 수 있습니다.Tkinter + Matplotlib 연동 예제 코드

  12. 파이썬 Tkinter 창이 열릴 화면 위치를 지정하는 방법

    Tkinter에서 창의 크기와 위치는 Geometry Manager(지오메트리 매니저)를 통해 손쉽게 설정할 수 있습니다. 메인 윈도우에 geometry(너비x높이+x좌표+y좌표) 형식의 geometry() 메서드를 적용하면, 프로그램 실행 시 창이 화면의 원하는 특정 위치에서 열리도록 지정할 수 있습니다. 여기서 x좌표와 y좌표는 화면 왼쪽 상단 모서리를 기준으로 한 픽셀 단위의 거리를 의미합니다. 예제 코드 # 필요한 라이브러리 임포트 from tkinter import * # Tkinter 프레임 인스턴스 생성 win =

  13. Tkinter Canvas 항목에 이벤트를 바인딩하는 방법

    Tkinter에서는 위젯에 이벤트를 바인딩하여 사용자 입력에 따라 다양한 작업을 수행할 수 있습니다. 일반 위젯뿐만 아니라 Canvas(캔버스) 항목에도 이벤트 핸들러를 연결할 수 있으며, 이때 bind(<Button>, callback) 메서드를 사용합니다. 캔버스 항목에 이벤트를 바인딩하면 정적인 도형이 동적으로 반응하도록 만들 수 있고, 이벤트 핸들러를 통해 자유롭게 커스터마이징할 수 있습니다. 예제 코드 # 필요한 라이브러리 임포트 from tkinter import * import random # Tkint

  14. 키보드 단축키를 지원하는 Tkinter 드롭다운 메뉴 만들기

    드롭다운 메뉴(Dropdown Menu)는 애플리케이션 상단의 메뉴 바에 세로로 나열된 메뉴 항목들의 목록입니다. Tkinter 애플리케이션에서는 Menu() 객체를 생성하여 메뉴 바를 만들 수 있으며, 모든 메뉴 항목은 이 객체 안에 포함됩니다.마우스 대신 키보드 단축키를 사용해 메뉴를 선택하고 각종 작업을 수행하고 싶은 경우가 있습니다. 이럴 때는 bind_all(<Key>, callback) 메서드를 사용하여 특정 키를 메뉴 전체에 바인딩할 수 있습니다.예제 코드아래 예제는 여러 메뉴 항목을 포함하는 애플리케이션 창

  15. PyInstaller를 사용해 Tkinter Python 앱을 .exe 실행 파일로 만드는 방법

    Python은 방대한 확장 라이브러리와 패키지 생태계로 잘 알려져 있습니다. 필요한 패키지를 손쉽게 설치하고 가져와 사용할 수 있죠. 하지만 Windows 운영체제에서 Tkinter 애플리케이션을 별도의 Python 환경 없이 실행하려면, 앱을 네이티브 실행 파일(.exe)로 변환하는 과정이 필요합니다. 이때 가장 널리 쓰이는 도구가 바로 PyInstaller입니다.PyInstaller는 Python 기반 애플리케이션을 단독으로 실행 가능한 네이티브 실행 파일(.exe)로 변환해 주며, 아래 단계에 따라 Tkinter 애플리케이션을

  16. Tkinter 창 배경색 설정하기: config() 메서드와 16진수 색상 코드 완벽 가이드

    Tkinter로 생성한 윈도우는 배경색, 전경색, 너비, 높이 등 다양한 속성과 특성을 추가하여 자유롭게 커스터마이징할 수 있습니다. 그중에서도 창의 색상을 변경하는 것은 GUI 애플리케이션의 첫인상을 결정짓는 중요한 요소입니다.config() 메서드로 창 색상 지정하기Tkinter에서 config() 메서드의 bg(background) 속성을 사용하면 메인 윈도우의 기본 배경색을 정의할 수 있습니다. 색상은 두 가지 방식으로 지정할 수 있습니다.16진수(Hex) 색상 코드: 예를 들어 #000은 검정색을 의미합니다.색상 이름: S

  17. Tkinter에서 Tk와 Toplevel 클래스의 차이점은 무엇일까?

    Tkinter 애플리케이션의 모든 창은 Tk 객체를 먼저 초기화하는 것부터 시작됩니다. Tk는 Tkinter 프로그램의 가장 기본적인 구성 요소로, 애플리케이션을 인스턴스화하는 역할을 합니다. 즉, 모든 위젯이 배치되는 메인 애플리케이션 창과 같은 기본 뼈대를 만들어 주는 핵심 클래스입니다.Toplevel 클래스란 무엇인가?반면 Toplevel 클래스는 메인 애플리케이션의 내부 위젯들과 상호작용하며 통신할 수 있도록 도와주는 역할을 합니다. 대표적인 예가 바로 Toplevel 윈도우로, 애플리케이션의 메인 창 외에 별도의 자식(ch

  18. overrideredirect() 없이 Tkinter 창의 제목 표시줄을 제거하는 방법

    Tkinter 창에서 제목 표시줄(타이틀 바)을 제거할 때 일반적으로 overrideredirect() 메서드를 사용하지만, 이 외에도 wm_attributes(type, value) 메서드를 활용하는 방법이 있습니다. 이 메서드는 속성 유형과 값을 지정하여 창의 다양한 특성을 설정할 수 있습니다.아래 예제에서는 부울(Boolean) 값인 fullscreen 속성을 사용하여 창의 제목 표시줄을 제거합니다. 전체 화면 모드로 전환되면 제목 표시줄이 자동으로 사라지게 됩니다.예제 코드# tkinter 라이브러리 임포트 from tkin

  19. Tkinter 창 제목 표시줄에서 기본 아이콘 제거하는 방법

    Tkinter로 생성한 윈도우에는 기본적으로 제목 표시줄에 애플리케이션 아이콘이 표시됩니다. 이 기본 아이콘을 제거하고 싶다면 wm_attributes(type, value) 메서드를 사용해 속성 유형과 값을 지정하는 방식으로 간단히 해결할 수 있습니다.아래 예제에서는 -toolwindow 속성을 활용합니다. 이 속성은 불리언(Boolean) 값으로 설정되며, True로 지정하면 애플리케이션 제목 표시줄에 표시되는 아이콘이 제거됩니다.예제 코드# tkinter 라이브러리 임포트 from tkinter import * # tkint

  20. PyInstaller로 Tkinter 앱을 EXE로 빌드할 때 콘솔 창 숨기는 방법

    Tkinter로 작성한 파이썬 애플리케이션을 Windows 실행 파일(.exe)로 변환할 때는 일반적으로 PyInstaller 패키지를 사용합니다. PyInstaller는 스크립트와 필요한 모든 의존성을 하나의 실행 파일로 묶어 주는 도구입니다.그런데 이렇게 만든 .exe 파일을 실행해 보면, 애플리케이션 창이 열리기 전에 검은색 명령 프롬프트(콘솔) 창이 먼저 나타나는 경우가 있습니다. GUI 프로그램이라면 이 콘솔 창은 불필요하기 때문에 숨기고 싶어집니다.해결 방법은 아주 간단합니다. PyInstaller 명령에 --window

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:281/450  20-컴퓨터/Page Goto:1 275 276 277 278 279 280 281 282 283 284 285 286 287