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

Python

  1. 파이썬(Python)으로 회사 이름에서 가장 많이 사용된 세 글자 찾는 방법

    문제 개요회사 이름이 문자열로 주어졌을 때, 해당 이름에서 가장 자주 등장하는 세 글자를 찾아 출력하는 프로그램을 만들어 보겠습니다. 이때 다음과 같은 규칙을 따라야 합니다.빈도수가 가장 높은 세 글자를 선택합니다.선택한 글자들을 빈도수 기준 내림차순으로 정렬합니다.만약 여러 글자의 빈도수가 같다면, 알파벳 순서를 우선하여 정렬합니다.예를 들어 입력 문자열이 s = TUTORIALSPOINT라면, 출력 결과는 [[3, T], [2, I], [2, O]]가 됩니다. 즉, T가 세 번, I와 O가 각각 두 번씩 등장하기 때문입니다.해결

  2. 파이썬에서 재귀 함수로 두 숫자의 최대공약수(GCD) 구하기

    두 개의 숫자 a와 b가 주어졌을 때, 재귀(Recursion) 방식으로 이 숫자들의 최대공약수(GCD, Greatest Common Divisor)를 구하는 방법을 알아보겠습니다. 최대공약수를 구하기 위해 널리 사용되는 유클리드 호제법(Euclidean Algorithm)을 활용합니다.유클리드 호제법이란? b)에 대해 a를 b로 나눈 나머지를 이용해 문제를 반복적으로 축소해 나가는 방식입니다. 두 수가 같아지는 시점의 값이 바로 최대공약수가 됩니다.예를 들어 입력이 a = 25, b = 45라면, 출력 결과는 5가 됩니다.해결 접

  3. 파이썬으로 큐브를 세로로 쌓을 수 있는지 확인하는 프로그램

    문제 개요서로 다른 크기의 n개 큐브가 담긴 배열 nums가 있고, 이 큐브들은 가로로 나란히 놓여 있다고 가정해 봅시다. 우리는 이 큐브들을 세로로 쌓아 하나의 탑을 만들어야 합니다. 단, 새로 올리는 큐브는 다음 조건을 만족해야 합니다.i번째 큐브가 j번째 큐브 위에 놓인다면, 아래에 있는 j번째 큐브의 한 변의 길이는 i번째 큐브의 한 변의 길이보다 크거나 같아야 합니다.세로로 쌓는 과정에서는 중간에 있는 큐브를 가져올 수 없고, 배열의 왼쪽 끝 또는 오른쪽 끝에 있는 큐브만 선택할 수 있습니다. 이 조건 안에서 모든 큐브를

  4. 파이썬 재귀 함수로 n번째 피보나치 수 구하는 프로그램

    문제 이해하기하나의 숫자 n이 주어졌을 때, 재귀 함수(recursive function)를 정의하여 n번째 피보나치 항을 구하는 것이 이번 문제의 목표입니다.예를 들어 입력값이 n = 8이라면 출력은 13이 됩니다. 피보나치 수열의 처음 몇 개 항은 다음과 같습니다.0, 1, 1, 2, 3, 5, 8, 13, 21, 34...해결 접근 방법이 문제는 다음 단계에 따라 해결할 수 있습니다.solve() 함수를 정의하고, 이 함수가 숫자 n을 매개변수로 받도록 합니다.n <= 2인 경우에는 n - 1을 반환합니다. (첫 번째 항

  5. n줄 회문 삼각형을 출력하는 파이썬 프로그램

    숫자 n이 주어졌을 때, n개의 행으로 구성된 삼각형을 만들어야 합니다. 각 행에는 회문(팰린드롬) 형태의 수가 포함됩니다.예를 들어 입력값이 n = 5라면, 출력 결과는 다음과 같습니다.1 121 12321 1234321 123454321해결 방법이 문제는 의외로 간단한 수학적 원리로 해결할 수 있습니다. 다음 단계를 따릅니다.1부터 n까지 반복합니다.((10^i) − 1)의 정수 부분을 9로 나눈 값의 제곱을 출력합니다.다음 줄로 넘어갑니다.여기서 핵심 아이디어는 레푸닛(repunit) 수입니다. 10의 거듭제곱에서 1을 뺀 값

  6. 파이썬으로 파스칼의 삼각형 생성하기: 단계별 구현 가이드

    파스칼의 삼각형이란?숫자 n이 주어졌을 때, n줄까지의 파스칼의 삼각형(Pascals Triangle)을 생성해야 합니다. 파스칼의 삼각형은 다음과 같은 모양을 가집니다.파스칼의 삼각형의 핵심 성질은 바로 윗줄에 인접한 두 숫자의 합이 그 아래에 위치한 숫자의 값이 된다는 것입니다. 예를 들어 6번째 줄의 첫 번째 10은 5번째 줄의 4와 6의 합이고, 두 번째 10은 같은 줄의 6과 4의 합입니다.따라서 입력이 n = 5라면 출력은 다음과 같습니다. 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1문제 해결 접

  7. 파이썬으로 n개의 문자 중 k개를 선택했을 때 'a'가 포함될 확률 계산하기

    서로 다른 n개의 영어 알파벳으로 이루어진 배열이 있다고 가정해 보겠습니다. 여기에 값 k가 하나 더 주어지며, 우리는 k개의 서로 다른 인덱스(1부터 시작하는 인덱스)를 균등한 확률로 선택할 수 있습니다. 이 문제의 목표는 선택한 k개의 인덱스 중 적어도 하나에 문자 a가 포함될 확률을 구하는 것입니다. 문제 예시 예를 들어 letters = [a, c, a, b, l, a, b, z]이고 k = 2라고 해보겠습니다. 이 경우 출력값은 64.28%가 됩니다. (1, 2), (1, 3)과 같은 형태의 조합이 총 28가지 존재하는

  8. Python으로 숫자 삼각형 출력하기: 간단한 알고리즘과 코드 예제

    문제 소개숫자 n이 주어졌을 때, n개의 행으로 이루어진 삼각형을 출력하는 프로그램을 작성해 보겠습니다. 이때 각 행에는 해당 행의 번호 i가 i번 반복되어 나타나야 합니다.예를 들어 입력값이 n = 5라면 출력 결과는 다음과 같습니다.1 22 333 4444 55555해결 접근 방법이 문제는 수학적 성질을 활용하면 매우 간단하게 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.1부터 n까지 반복합니다.각 반복에서 (10^i) // 9 × i 값을 계산하여 출력합니다. 여기서 10^i를 9로 나눈 몫은 1, 11, 111, 1

  9. 파이썬으로 복소수 클래스 정의하기: 사칙연산과 크기(모듈러스) 계산 완벽 가이드

    파이썬(Python)에서는 복잡한 수학 개념도 객체 지향 프로그래밍으로 깔끔하게 구현할 수 있습니다. 이번 글에서는 복소수(Complex Number)를 표현하는 클래스를 직접 정의하고, 아래와 같은 연산 메서드를 구현해 보겠습니다.add() — 두 복소수의 덧셈sub() — 두 복소수의 뺄셈mul() — 두 복소수의 곱셈div() — 두 복소수의 나눗셈mod() — 복소수의 크기(절댓값, 모듈러스) 계산복소수는 일반적으로 (a + bi) 형태로 표현됩니다. 여기서 a는 실수부(real part), b는 허수부(imaginary p

  10. Python에서 두 문자열을 번갈아 병합하는 프로그램

    길이가 같은 두 문자열 s와 t가 주어졌다고 가정해 보겠습니다. 목표는 두 문자열의 글자를 한 글자씩 번갈아 가며 하나의 새로운 문자열로 병합하는 것입니다. 즉, s의 i번째 글자 다음에 t의 i번째 글자를 이어 붙이고, 그다음 글자로 넘어가는 방식으로 전체 문자열을 완성합니다. 예를 들어 입력이 s = hello, t = world라면, h → w → e → o → l → r → l → l → o → d 순서로 글자가 배치되어 최종 출력은 hweolrllod가 됩니다. 문제 해결 접근 방법 이 문제는 Python의 내장 함수 zi

  11. Python으로 문자열의 인접 문자를 쌍 단위로 교환하는 방법

    문자열 s가 주어졌을 때, 모든 홀수 위치의 문자와 짝수 위치의 문자를 서로 교환해야 하는 문제를 생각해 봅시다. 최종적으로 우리는 문자들이 두 개씩 짝지어 교환된 s의 순열(permutation)을 얻게 됩니다.예를 들어 입력이 s = programming이라면, 출력은 rpgoarmmnig가 됩니다.즉, 각 인접한 두 문자(p와 r, o와 g, a와 r 등)가 서로 자리를 바꾸는 방식입니다.문제 해결 접근 방법이 문제는 다음 단계를 따라 해결할 수 있습니다.문자열 s를 문자들의 리스트로 변환합니다.인덱스 0부터 시작하여 2씩 증

  12. Python으로 문자열 압축하기: 런 길이 인코딩(Run Length Encoding) 구현 방법

    문제 개요하나의 문자열 s가 주어졌을 때, 이를 런 길이 인코딩(Run Length Encoding) 형태로 압축하는 프로그램을 작성해 보겠습니다.런 길이 인코딩은 동일한 문자가 연속적으로 k번 반복될 경우, 해당 문자와 반복 횟수를 함께 표기하는 방식입니다. 예를 들어 bbbb는 문자 b가 4번 연속 나타나므로 b4로 인코딩됩니다. 다만, 한 번만 등장하는 문자에는 개수를 붙이지 않습니다.예시입력: s = abbbaaaaaaccdaaab출력: ab3a6c2da3b위 예시에서 bbb는 b3, aaaaaa는 a6, cc는 c2, aa

  13. Python으로 두 문자열의 공통 접두사를 추출하는 프로그램 만들기

    문제 이해하기소문자 영어 알파벳으로만 이루어진 두 문자열 s와 t가 주어졌다고 가정해 봅시다. 우리가 구해야 할 것은 각각 (l, k) 형태를 가지는 세 개의 쌍(pair)으로 이루어진 리스트입니다. 여기서 k는 문자열, l은 해당 문자열의 길이를 의미합니다.세 쌍은 다음과 같이 구성됩니다.첫 번째 쌍: 두 문자열에서 가장 긴 공통 접두사(longest common prefix)인 p두 번째 쌍: 공통 접두사를 제거한 후 s에 남은 부분 s세 번째 쌍: 공통 접두사를 제거한 후 t에 남은 부분 t따라서 최종 결과는 [(len(p),

  14. 파이썬으로 문자열에서 중복 문자를 제거하는 프로그램

    문제 개요 문자열 s가 주어졌다고 가정해 봅시다. 우리의 목표는 이전에 이미 등장했던 문자들을 모두 제거하고, 중복이 없는 축소된 문자열을 반환하는 것입니다. 이 문제를 해결하기 위해 파이썬의 OrderedDict(순서형 딕셔너리)를 활용합니다. 이 자료구조는 문자들이 처음 등장한 순서, 즉 삽입 순서를 그대로 유지해 줍니다. 딕셔너리의 값(value)은 각 문자의 빈도수로 저장하지만, 이 문제에서는 빈도수 자체는 중요하지 않습니다. 핵심은 어떤 문자가 한 번이라도 등장했는지 여부만 확인하면 되기 때문입니다. 딕셔너리 구성이 끝나

  15. 파이썬으로 주어진 속성 인덱스를 기준으로 테이블(2차원 리스트) 정렬하는 방법

    문제 개요선수들의 정보를 담고 있는 2차원 리스트가 있다고 가정해 보겠습니다. 각 행은 한 명의 선수에 대한 정보를 나타내며, 순위(Rank), 나이(Age), 키(Height) 세 가지 속성으로 구성되어 있습니다. 여기에 추가로 숫자 k가 주어졌을 때, k번째 속성을 기준으로 전체 데이터를 정렬해야 합니다.예를 들어 입력이 다음과 같다고 해보겠습니다.순위나이키125190235180333185426175535180이때 k = 1, 즉 두 번째 속성인 나이를 기준으로 오름차순 정렬하면 결과는 다음과 같습니다.순위나이키125190426

  16. 사용자 정의 규칙에 따라 문자열을 정렬하는 Python 프로그램

    영숫자(alphanumeric)로 이루어진 문자열 s가 하나 주어졌다고 가정해 보겠습니다. 이 문자열을 다음 조건에 따라 정렬해야 합니다.모든 소문자는 대문자보다 앞에 위치하며, 소문자끼리는 알파벳 순으로 정렬됩니다.모든 대문자는 숫자보다 앞에 위치하며, 대문자끼리는 알파벳 순으로 정렬됩니다.홀수 숫자는 짝수 숫자보다 앞에 위치하며, 각 그룹 내에서는 오름차순으로 정렬됩니다.예를 들어 입력이 s = HeLlo1234라면, 출력은 eloHL1324가 됩니다.해결 접근 방식이 문제는 각 문자에 우선순위 코드(priority code)를

  17. 파이썬으로 서로 다른 숫자의 n제곱 합이 특정 수가 되는 조합의 수 구하기

    숫자 x와 n이 주어졌을 때, 서로 중복되지 않는 고유한 숫자들의 n제곱의 합으로 x를 표현할 수 있는 방법의 수를 구하는 문제입니다.예를 들어 입력이 x = 100, n = 2라면 출력은 3이 됩니다. 가능한 조합은 다음과 같기 때문입니다.6² + 8²10²1² + 3² + 4² + 5² + 7²알고리즘 접근 방법이 문제는 재귀 호출을 활용한 백트래킹 기법으로 해결할 수 있습니다. 현재까지 선택한 숫자들의 거듭제곱 합(cs)과 다음 후보 숫자(cn)를 추적하면서, 목표값 x에 정확히 도달하는 경우의 수를 하나씩 세어 나갑니다.정답

  18. 파이썬 정규식으로 이메일 주소 유효성 검사하는 방법

    이메일 주소가 문자열로 주어졌을 때, 아래 조건들을 기준으로 해당 주소가 유효한지 판별해야 합니다.유효성 검사 조건이메일 형식은 반드시 username@company.domain 구조를 따라야 합니다.사용자명(username)에는 영문 대소문자, 숫자, 하이픈(-), 언더스코어(_)만 사용할 수 있습니다.회사명(company)에는 영문 대소문자와 숫자만 사용할 수 있습니다.도메인(domain)에는 영문 대소문자만 사용할 수 있습니다.확장자(최상위 도메인)의 최대 길이는 3자입니다.정규식을 활용한 해결 방법이메일 주소의 유효성을 검사

  19. 파이썬으로 리스트에서 k번 이상 등장하는 요소 찾는 방법

    리스트 nums와 값 k가 주어졌을 때, 리스트 안에서 최소 k번 이상 등장하는 요소들을 모두 찾아내는 문제를 파이썬으로 해결해 보겠습니다.예를 들어, 입력이 다음과 같다고 가정해 봅시다.nums = [2,5,6,2,6,1,3,6,3,8,2,5,9,3,5,1], k = 3이 경우 출력 결과는 [2, 5, 6, 3]이 됩니다. 각 숫자의 등장 횟수를 세어 보면 2, 5, 6, 3은 각각 정확히 3번씩 나타나기 때문입니다.해결 접근 방법이 문제는 다음과 같은 단계로 해결할 수 있습니다.파이썬의 Counter를 사용하여 nums에 있는

  20. 파이썬 reduce() 함수로 유리수 리스트의 곱 구하기

    개요유리수(fraction)들이 담긴 리스트가 주어졌을 때, 파이썬의 reduce() 함수를 사용하여 이들의 곱을 구하는 프로그램을 작성해 보겠습니다.reduce() 함수는 두 개의 인자를 받는 함수를 리스트의 요소들에 대해 왼쪽에서 오른쪽으로 누적적으로 적용하면서 하나의 결과값을 만들어냅니다. functools 모듈에 포함되어 있어 import 후 사용할 수 있습니다.문제 예시예를 들어 입력이 다음과 같다면,fractions = [(5,3),(2,8),(6,9),(5,12),(7,2)]출력은 (175, 432)가 됩니다. 계산 과

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:374/450  20-컴퓨터/Page Goto:1 368 369 370 371 372 373 374 375 376 377 378 379 380