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

Python

  1. 파이썬으로 문자열 형태의 두 숫자를 더하는 프로그램 만들기

    두 개의 문자열 S와 T가 있다고 가정해 봅시다. 이 문자열들은 각각 하나의 정수를 나타내며, 우리는 이 두 수를 더한 결과를 동일한 문자열 형태로 반환해야 합니다.예를 들어 입력이 256478921657과 5871257468이라면, 256478921657 + 5871257468 = 262350179125이므로 출력은 262350179125가 됩니다.문제 해결 접근 방법파이썬은 임의 크기의 정수를 기본적으로 지원하기 때문에 이 문제는 매우 간단하게 해결할 수 있습니다. 단계별로 살펴보면 다음과 같습니다.문자열 S와 T를 int()

  2. 파이썬으로 문자를 시계 방향으로 이동해 한 문자열을 다른 문자열로 변환할 수 있는지 확인하는 프로그램

    두 개의 문자열 p와 q, 그리고 숫자 r이 주어졌을 때, 문자열 p의 일부 문자를 시계 방향으로 최대 r번 이동하여 q로 변환할 수 있는지 확인하는 문제입니다. 예를 들어, c는 시계 방향으로 2번 이동하면 e가 됩니다.만약 입력이 p = abc, q = ccc, r = 3이라면 결과는 True가 됩니다. a를 시계 방향으로 2번 이동해 c로 만들고, b를 시계 방향으로 1번 이동해 c로 만들면 총 3번의 이동이 필요하기 때문입니다.문제 해결 접근 방법이 문제는 다음 단계를 따라 해결할 수 있습니다.문자열 a와 b의 길이가 서로

  3. Python으로 이진 탐색 트리(BST)에서 특정 값이 존재하는지 확인하는 방법

    이진 탐색 트리(Binary Search Tree, BST)와 하나의 값 val이 주어졌을 때, 이 값이 트리 안에 존재하는지 확인하는 프로그램을 만들어 보겠습니다.예를 들어 아래와 같은 트리가 있다고 가정해 봅시다.만약 val = 7이라면, 7은 트리에 존재하므로 결과는 True가 됩니다.풀이 접근 방법BST의 핵심 성질을 활용하면 매 단계마다 탐색 범위를 절반으로 줄일 수 있습니다. 알고리즘은 다음과 같습니다.루트 노드(root)와 값(val)을 인자로 받는 solve() 함수를 정의합니다.현재 노드가 null이면 해당 값이 트

  4. 파이썬으로 두 문자열 간 1:1 문자 매핑 가능 여부 확인하는 방법

    두 개의 소문자 문자열 s와 t가 주어졌을 때, s의 각 문자를 다른 문자(동일한 문자일 수도 있음)에 1:1로 대응시켜 s를 t로 변환할 수 있는지 확인하는 문제입니다. 이때 문자들의 순서는 절대 바뀌지 않는다는 조건이 붙습니다.예를 들어 입력이 s = papa, t = lili라면 결과는 True가 됩니다. p → l, a → i라는 매핑을 만들면 papa가 lili로 정확히 변환되기 때문입니다.문제 해결 접근 방법핵심 아이디어는 양방향 딕셔너리(bidirectional map)를 사용하는 것입니다. 한 문자가 이미 다른 문자로

  5. 파이썬으로 이진 트리의 최대 너비 구하기

    이진 트리가 하나 주어졌을 때, 트리에서 가장 넓은 레벨의 최대 너비(maximum width)를 구하는 문제입니다. 여기서 레벨의 너비란 해당 레벨에서 가장 왼쪽에 있는 노드와 가장 오른쪽에 있는 노드 사이에 존재할 수 있는 노드의 개수를 의미합니다.예를 들어 다음과 같은 이진 트리가 입력으로 주어지면,출력 결과는 2가 됩니다.해결 접근 방법이 문제는 깊이 우선 탐색(DFS)과 위치 번호 매기기(position indexing)를 활용하면 효율적으로 해결할 수 있습니다. 각 노드에 힙(heap) 구조처럼 위치 번호를 부여하는 방식

  6. Python으로 문자열 수열 규칙에 따라 n번째 항을 구하는 프로그램

    두 개의 문자열 s와 t, 그리고 양의 정수 n이 주어졌을 때, 아래 규칙을 따르는 수열 A의 n번째 항을 구하는 문제입니다.A[0] = sA[1] = tn이 짝수일 때: A[n] = A[n-1] + A[n-2]n이 홀수일 때: A[n] = A[n-2] + A[n-1]예를 들어 s = a, t = b라고 하면, 수열 A는 다음과 같이 만들어집니다.[a, b, ba (a + b), bba (b + ba), bbaba (bba + ba)]따라서 입력이 s = pk, t = r, n = 4라면 결과는 rrpkrpk가 됩니다.문제 해결 접

  7. Python에서 문자열 s가 t의 부분 문자열이 되도록 만드는 최소 연산 횟수 구하기

    두 개의 문자열 s와 t가 주어졌을 때, t가 s의 부분 문자열이 되도록 만들기 위해 필요한 최소 연산 횟수를 구하는 문제를 살펴보겠습니다. 여기서 각 연산은 s의 임의의 위치를 하나 선택하여 해당 위치의 문자를 다른 문자로 변경하는 것을 의미합니다.예를 들어, 입력이 s = abbpqr, t = bbxy라고 가정해 보겠습니다. 이때 출력은 2가 됩니다. 부분 문자열 bbpq를 선택한 뒤 p를 x로, q를 y로 바꿔주면 되기 때문입니다.문제 해결 접근 방법이 문제는 슬라이딩 윈도우(Sliding Window) 기법으로 효율적으로 해

  8. 파이썬으로 숫자의 각 자릿수 합 구하기 – 문자열 변환 없이 해결하는 방법

    숫자 num이 주어졌을 때, 그 숫자를 이루고 있는 모든 자릿수의 합을 구하는 프로그램을 만들어 보겠습니다. 여기서 중요한 조건은 문자열(string)로 변환하지 않고 문제를 해결해야 한다는 점입니다.예를 들어 입력값이 num = 512라면, 출력 결과는 8이 됩니다. 왜냐하면 5 + 1 + 2 = 8이기 때문입니다.문제 해결 접근 방법문자열을 사용하지 않고 자릿수의 합을 구하려면 나눗셈과 나머지 연산을 활용할 수 있습니다. 알고리즘은 다음과 같은 단계로 진행됩니다.합계를 저장할 변수 sum을 0으로 초기화합니다.num이 0이 아닌

  9. 파이썬으로 리스트에서 합이 K가 되는 두 숫자 찾기 — 해시 셋 활용 O(n) 풀이

    문제 개요숫자로 이루어진 리스트 nums와 하나의 숫자 k가 주어졌을 때, 리스트 안에서 서로 다른 두 숫자를 골라 그 합이 정확히 k가 되는 경우가 존재하는지 확인하는 프로그램을 만들어 보겠습니다.여기에는 몇 가지 조건이 붙습니다. 첫째, 같은 요소를 두 번 사용할 수 없습니다. 둘째, 리스트의 숫자는 음수나 0을 포함할 수 있습니다.예를 들어 입력이 nums = [45, 18, 9, 13, 12], k = 31이라면, 18 + 13 = 31이 성립하므로 결과는 True가 됩니다.해결 접근 방식: 해시 셋(Set) 활용모든 숫자

  10. 파이썬으로 문자열이 회문(Palindrome)인지 확인하는 방법

    주어진 문자열 s가 회문(palindrome)인지 아닌지 판별해야 합니다. 회문이란 앞에서 읽으나 뒤에서 읽으나 동일한 단어나 문장을 의미합니다.예를 들어 입력이 s = racecar라면, 이 문자열은 거꾸로 읽어도 racecar이므로 출력 결과는 True가 됩니다.풀이 접근 방법이 문제는 다음 단계로 간단히 해결할 수 있습니다.문자열 s의 역순(reversed) 버전을 변수 t에 저장합니다.만약 t와 s가 같다면 True를 반환합니다.그렇지 않다면 False를 반환합니다.파이썬의 슬라이싱(slicing) 기법 [::-1]을 사용하

  11. 파이썬으로 시작 숫자를 목표 숫자로 변환하는 최소 연산 횟수 구하기

    두 개의 숫자 start와 end(start < end)가 주어졌을 때, 다음 두 가지 연산만 사용하여 start를 end로 변환하는 데 필요한 최소 연산 횟수를 구하는 프로그램을 만들어 보겠습니다.숫자를 1 증가시키기숫자를 2배로 곱하기예를 들어 입력이 start = 5, end = 11이라면 출력은 2가 됩니다. 5에 2를 곱해 10을 만들고, 여기에 1을 더해 11을 만들면 되기 때문입니다.문제 해결 접근 방법이 문제는 정방향(start에서 end로)으로 접근하는 것보다 역방향(end에서 start로)으로 거슬러 올라가는

  12. 파이썬으로 완료할 수 있는 작업 수를 찾는 프로그램 구현하기

    작업 목록과 사람 목록이 각각 주어져 있다고 가정해 보겠습니다. tasks[i]는 i번째 작업을 수행하는 데 필요한 힘의 양을 나타내고, people[i]는 i번째 사람이 가지고 있는 힘의 양을 나타냅니다. 이때 한 사람은 최대 하나의 작업만 수행할 수 있다는 조건 하에서, 완료할 수 있는 작업의 총 개수를 구하는 것이 이 글의 목표입니다.예를 들어 입력이 tasks = [4, 3, 9, 15], people = [10, 5, 3, 2]라고 한다면 출력은 3이 됩니다. 첫 번째 사람은 힘이 10이므로 작업 9를 수행할 수 있고, 두

  13. Python으로 편집기의 최종 텍스트 구하기: 백스페이스('<-') 처리 프로그램

    편집기에 순서대로 입력된 문자를 담고 있는 문자열 s가 있다고 가정해 봅시다. 이때 기호 <-는 백스페이스(직전 글자 삭제)를 의미합니다. 우리가 구해야 할 것은 모든 입력이 끝난 후 편집기의 최종 상태, 즉 화면에 남아 있는 텍스트입니다.예를 들어 입력이 s = ilovepython<-<-ON이라면 출력은 ilovepythON이 됩니다. ilovepython을 입력한 뒤 두 번의 백스페이스가 마지막 두 글자 on을 지웠고, 다시 ON을 입력했기 때문입니다.접근 방법이 문제는 스택과 유사한 방식으로 간단히 해결할 수

  14. Python으로 세 숫자의 곱 구하기 – 중복된 값은 제외

    세 개의 숫자 x, y, z가 주어졌을 때 이들의 곱을 구하는 문제를 생각해 보겠습니다. 단, 두 개 이상의 숫자가 서로 같다면 해당 값은 곱셈에서 제외해야 합니다.예를 들어 입력이 x = 5, y = 4, z = 2라면 세 숫자가 모두 서로 다르므로 결과는 5 * 4 * 2 = 40이 됩니다.문제 해결 접근 방법중복 여부를 추적할 temp_set과, 중복으로 판별된 값을 담을 remove라는 두 개의 집합(set)을 생성합니다.[x, y, z]의 각 요소 i에 대해 다음을 수행합니다.i가 이미 temp_set에 존재한다면 remo

  15. 파이썬(Python)으로 주어진 행렬이 토플리츠 행렬(Toeplitz Matrix)인지 확인하는 방법

    행렬 M이 주어졌을 때, 이 행렬이 토플리츠 행렬(Toeplitz Matrix)인지 판별하는 프로그램을 만들어 보겠습니다. 토플리츠 행렬이란 왼쪽에서 오른쪽 아래로 내려가는 모든 대각선(주대각선 방향)의 값이 서로 같은 행렬을 말합니다.토플리츠 행렬의 조건예를 들어 다음과 같은 입력 행렬이 있다고 가정해 봅시다.726372537이 행렬을 살펴보면 왼쪽 위에서 오른쪽 아래로 향하는 각 대각선의 값이 모두 동일합니다. 따라서 이 행렬은 토플리츠 행렬이며, 출력 결과는 True가 됩니다.해결 접근 방법이 문제는 간단한 반복문 비교만으로

  16. 파이썬으로 행렬의 전치행렬(Transpose) 구하기: 단계별 가이드

    전치행렬(Transpose)이란?n×n 크기의 행렬 M이 주어졌을 때, 해당 행렬의 전치행렬(transpose)을 구해야 합니다. 전치행렬은 원래 행렬의 행과 열의 위치를 서로 맞바꾼 행렬로, 모든 r과 c에 대해 matrix[r][c] = matrix[c][r]라는 관계가 성립합니다.입력 예시726372537출력 결과735273627위 예시에서 확인할 수 있듯이, 입력 행렬의 각 열이 출력 행렬의 행으로 그대로 변환됩니다.해결 절차다음 단계를 따르면 문제를 쉽게 해결할 수 있습니다.빈 리스트 M을 생성합니다.변수 tracker를

  17. 파이썬으로 별(*)을 이용해 계단 모양의 삼각형 만들기

    숫자 n이 주어졌을 때, n개의 단계를 가진 계단 모양 문자열을 만드는 문제입니다. 이때 각 줄은 줄바꿈(newline) 문자로 구분됩니다.예를 들어 입력값이 n = 5라면 출력 결과는 다음과 같습니다.         *         **       ***     ****   *****해결 방법이 문제는 다음 단계를 따라 해결할 수 있습니다.빈 문자열 s를 초기화합니다.i가 0부터 n-1까지 반복하

  18. 파이썬으로 못생긴 수(Ugly Number) 판별하기 — 소인수 2, 3, 5 확인 알고리즘

    알고리즘 문제에서 자주 등장하는 못생긴 수(Ugly Number)란 소인수가 오직 2, 3, 5로만 구성된 양의 정수를 의미합니다. 이번 글에서는 파이썬을 활용해 주어진 수 n이 못생긴 수인지 판별하는 프로그램을 작성해 보겠습니다. 예를 들어 n = 18이라고 가정해 봅시다. 18을 소인수분해하면 2 × 3 × 3이 되므로 소인수가 2와 3뿐입니다. 따라서 이 경우 결과는 True가 됩니다. 문제 해결 접근 방식 못생긴 수를 판별하는 핵심 아이디어는 다음과 같습니다. n이 음수라면 즉시 False를 반환합니다. 허용되는 소인수

  19. 파이썬으로 'a'와 'b' 문자열에서 만들 수 있는 고유한 문자열의 개수 구하기

    문제 설명"a"와 "b"로만 이루어진 문자열 s가 있다고 가정해 보겠습니다. 이때 "a"는 그대로 "a"로 남아 있거나 "b"로 바꿀 수 있지만, "b"는 어떤 경우에도 변경할 수 없습니다. 우리의 목표는 이러한 규칙을 적용해 만들 수 있는 고유한 문자열의 총 개수를 구하는 것입니다.예를 들어 입력이 s = "baab"라고 한다면, 만들 수 있는 문자열은 ["baab", "babb&

  20. 파이썬으로 정렬된 리스트에서 고유한 숫자 개수 구하기

    문제 개요정렬된 숫자 리스트 nums가 주어졌을 때, 이 리스트에 포함된 고유한(중복되지 않은) 요소의 개수를 구하는 것이 목표입니다.예를 들어 입력이 다음과 같다면,nums = [3, 3, 3, 4, 5, 7, 7]고유한 숫자는 [3, 4, 5, 7] 네 가지이므로 출력은 4가 됩니다.풀이 접근 방법파이썬의 집합(Set) 자료구조를 활용하면 간단하게 해결할 수 있습니다. 집합은 중복 값을 허용하지 않기 때문에, 요소를 하나씩 확인하며 처음 등장하는 값만 카운트하면 됩니다.알고리즘 단계새로운 빈 집합 s를 생성합니다.카운터 변수 c

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:170/450  20-컴퓨터/Page Goto:1 164 165 166 167 168 169 170 171 172 173 174 175 176