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

Python

  1. 파이썬에서 문자열 리스트를 리스트의 리스트로 변환하는 방법

    이 글에서는 문자열 데이터 타입으로 구성된 리스트를 실제 리스트의 리스트(list of lists) 형태로 변환하는 방법을 알아봅니다. 여기서 다루는 입력 데이터는 각 요소가 리스트처럼 생긴 문자열이며, 이를 파이썬이 실제로 다룰 수 있는 중첩 리스트 구조로 바꾸는 것이 목표입니다.예를 들어 [0, 1, 2, 3]이라는 문자열 하나가 리스트의 요소로 들어 있는 경우, 이를 [0, 1, 2, 3]과 같은 실제 리스트로 분리해야 할 때가 있습니다. 대표적인 해결 방법은 크게 두 가지입니다.방법 1: strip()과 split() 조합하

  2. 파이썬 알고리즘: 정렬된 배열에서 고정점(Fixed Point) 찾기

    문제 설명오름차순으로 정렬된 중복 없는 정수 배열 A가 주어졌을 때, A[i] == i를 만족하는 가장 작은 인덱스 i를 찾아 반환해야 합니다. 만약 그러한 인덱스가 존재하지 않으면 -1을 반환합니다.예를 들어 배열이 [-10, -5, 0, 3, 7]이라면 결과는 3입니다. 이는 A[3] = 3, 즉 인덱스와 해당 위치의 값이 일치하기 때문입니다.해결 접근 방법이 문제는 선형 탐색(Linear Search)으로 간단하게 해결할 수 있습니다. 해결 단계는 다음과 같습니다.인덱스 i를 0부터 배열 A의 길이 - 1까지 순서대로 순회합니

  3. 파이썬으로 문자열의 인덱스 쌍(Index Pairs) 찾기

    문제 이해하기하나의 텍스트 문자열(text)과 단어 목록(words)이 주어졌을 때, 부분 문자열 text[i]...text[j]가 words 목록에 포함되는 모든 인덱스 쌍 [i, j]를 찾는 문제입니다.예를 들어 문자열이 ababa이고 words 배열이 [aba, ab]라고 한다면, 출력은 [[0,1], [0,2], [2,3], [2,4]]가 됩니다.여기서 한 가지 눈여겨볼 점은 매칭 결과가 서로 겹칠 수 있다는 것입니다. 위 예제에서 aba는 시작 인덱스 0에서 한 번([0,2]), 그리고 다시 인덱스 2에서 한 번([2,4]

  4. 파이썬으로 K보다 작은 두 수의 최대 합 구하기

    문제 개요정수 배열 A와 정수 K가 주어졌을 때, 다음 조건을 만족하는 최댓값 S를 찾는 문제입니다.인덱스 i < j를 만족하는 두 원소 A[i]와 A[j]의 합이 S일 것S가 K보다 작을 것만약 이러한 조건을 만족하는 두 원소가 존재하지 않는다면 -1을 반환해야 합니다.예를 들어 A = [34, 23, 1, 24, 75, 33, 54, 8]이고 K = 60이라고 가정해 보겠습니다. 이 경우 출력값은 58입니다. 34와 24를 더하면 58이 되는데, 이 값은 60보다 작으면서 만들 수 있는 합 중 가장 크기 때문입니다.풀이 접

  5. Python에서 특정 연도와 월의 일 수 구하는 방법

    문제 개요주어진 연도(Y)와 월(M)에 대해 해당 월의 총 일수를 반환하는 프로그램을 작성해야 합니다. 예를 들어, 연도가 1992이고 월이 7월이라면 결과는 31일이며, 연도가 2020년이고 월이 2월이라면 윤년이므로 결과는 29일이 됩니다.해결 접근 방법이 문제는 다음 단계를 따라 해결할 수 있습니다.월(m)이 2월인 경우:연도(y)가 윤년이면 29일을 반환하고, 그렇지 않으면 28일을 반환합니다.[1, 3, 5, 7, 8, 10, 12] 요소로 구성된 리스트를 만듭니다. 이는 31일까지 있는 월들을 의미합니다.m이 이 리스트에

  6. Python으로 문자열에서 모음 제거하기

    문제 개요문자열이 하나 주어졌을 때, 해당 문자열에서 모든 모음(vowel)을 제거하는 것이 목표입니다. 예를 들어 문자열이 iloveprogramming이라면, 모음을 제거한 결과는 다음과 같습니다.lvprgrmmng해결 접근 방법이 문제는 매우 간단한 치환(replace) 방식으로 해결할 수 있습니다. 알고리즘의 단계는 다음과 같습니다.모음 a, e, i, o, u를 담고 있는 배열(또는 리스트)을 생성합니다.각 모음 v에 대해 반복하면서, 문자열 내의 v를 빈 문자열()로 치환합니다.Python의 str.replace() 메서

  7. 파이썬으로 한 번만 등장하는 가장 큰 숫자 찾기

    문제 개요숫자로 이루어진 리스트가 주어졌을 때, 딱 한 번만 등장하는 숫자 중 가장 큰 값을 반환하는 문제입니다. 만약 한 번만 등장하는 요소가 존재하지 않는다면 -1을 반환해야 합니다.예를 들어, 리스트가 [5, 2, 3, 6, 5, 2, 9, 6, 3]이라면 각 숫자의 등장 횟수를 세었을 때 9만 한 번 나타나므로, 결과값은 9가 됩니다.해결 접근 방법이 문제는 해시맵(파이썬의 딕셔너리)을 활용하면 효율적으로 해결할 수 있습니다. 절차는 다음과 같습니다.리스트의 각 요소를 하나씩 확인하면서 딕셔너리에 저장합니다. 해당 요소가 아

  8. 파이썬으로 암스트롱 수(Armstrong Number) 판별하기

    암스트롱 수란 무엇일까요?k자리 숫자 N이 있다고 가정해 봅시다. 이때 각 자릿수를 k제곱한 값들을 모두 더한 합이 N 자신과 같다면, 그 수를 암스트롱 수(Armstrong Number)라고 부릅니다. 예를 들어 153은 세 자리 수이며, 1³ + 5³ + 3³ = 1 + 125 + 27 = 153이므로 대표적인 암스트롱 수입니다. 그 밖에도 370, 371, 407 등이 암스트롱 수에 해당합니다.따라서 우리가 작성해야 할 프로그램은 주어진 수가 암스트롱 수이면 true를, 그렇지 않으면 false를 반환하면 됩니다.문제 해결 접

  9. 파이썬으로 정렬된 배열에서 과반수(majority) 요소인지 확인하는 방법

    오름차순(비내림차순)으로 정렬된 배열 nums와 하나의 숫자 target이 주어졌을 때, 이 타깃이 해당 배열의 과반수(majority) 요소인지 판별해야 합니다.여기서 과반수 요소란 길이가 N인 배열에서 N/2번보다 많이 등장하는 요소를 의미합니다. 예를 들어 배열이 [2, 4, 5, 5, 5, 5, 5, 6, 6]이고 타깃이 5라면, 5는 총 5번 등장하므로 배열 길이 9의 절반인 4.5보다 큽니다. 따라서 결과는 true가 됩니다.문제 해결 접근 방법정렬된 배열의 특성을 활용하면 이진 탐색(binary search)으로 효율적

  10. 파이썬 알고리즘: 한 줄짜리 키보드 타이핑 시간 계산하기

    길이가 26인 문자열로 키보드 배치를 나타내는 특수한 키보드를 생각해 봅시다. 모든 키가 한 줄에 나란히 배열되어 있고, 인덱스는 0부터 25까지 매겨집니다. 처음에 손가락은 인덱스 0 위치에 놓여 있습니다.어떤 문자를 입력하려면 손가락을 해당 문자의 인덱스 위치로 이동해야 합니다. 손가락을 인덱스 i에서 인덱스 j로 옮기는 데 걸리는 시간은 |i − j|로 정의됩니다. 따라서 주어진 단어를 입력하는 데 총 얼마나 걸리는지 계산하는 함수를 만들면 됩니다.예를 들어 키보드 배치가 abcdefghijklmnopqrstuvwxyz이고 입

  11. Python으로 해결하는 다이어트 계획 성능(Diet Plan Performance) 문제

    문제 개요다이어터가 i번째 날에 섭취한 칼로리를 calories[i]라고 합시다. 정수 k가 주어졌을 때, 연속된 k일 구간(calories[i], calories[i+1], ..., calories[i+k-1], 단 0 <= i <= n-k)마다 총 섭취 칼로리 T를 계산합니다. 여기서 T는 해당 구간의 칼로리 합(calories[i] + calories[i+1] + ... + calories[i+k-1])이며, 다음 조건에 따라 점수가 매겨집니다.T가 하한(lower) 미만이면 다이어트를 잘못 수행한 것이므로 1점 감점T가 상한

  12. 파이썬으로 구현하는 헥스스피크(Hexspeak) 변환 알고리즘

    헥스스피크(Hexspeak)란 무엇인가?헥스스피크는 10진수를 16진수 문자열로 변환한 뒤, 숫자 0을 영문자 O로, 숫자 1을 영문자 I로 치환하여 만드는 재미있는 표현 방식입니다. 이렇게 만들어진 문자열이 마치 단어처럼 읽히는 경우가 있어 붙여진 이름입니다.헥스스피크 표현이 유효하려면 결과 문자열이 반드시 다음 문자들만으로 구성되어야 합니다.{A, B, C, D, E, F, I, O}문제 정의10진수 정수 N을 나타내는 문자열 num이 주어졌을 때, N의 헥스스피크 표현을 구하는 것이 목표입니다. 만약 변환 결과가 유효하지 않다

  13. 파이썬으로 풀어보는 4Sum II: 합이 0이 되는 네 수의 조합 찾기

    문제 이해하기 정수 값으로 이루어진 네 개의 리스트 A, B, C, D가 주어졌다고 가정해 봅시다. 이때 A[i] + B[j] + C[k] + D[l]의 결과가 0이 되는 튜플 (i, j, k, l)의 개수를 구하는 것이 이번 문제의 목표입니다. 모든 리스트는 동일한 길이 N을 가지며, N은 0 이상 500 이하입니다. 또한 각 정수는 -228부터 228 - 1 사이의 범위에 있고, 결과값은 최대 231 - 1을 넘지 않는다고 보장됩니다. 입력 예시 예를 들어 입력이 다음과 같다면, [1,2][-2,-1][-1,2][0,2] 출력

  14. 파이썬으로 배열 요소를 같게 만드는 최소 이동 횟수 구하기 (Equal Array Elements II)

    문제 개요비어 있지 않은 정수 배열이 주어졌을 때, 모든 배열 요소를 동일한 값으로 만들기 위해 필요한 최소 이동 횟수를 구하는 문제입니다. 여기서 한 번의 이동(move)이란 선택한 요소의 값을 1만큼 증가시키거나 감소시키는 것을 의미합니다.예를 들어 배열이 [1, 2, 3]이라면 출력값은 2가 됩니다. 1을 2로 증가시키고, 3을 2로 감소시키면 총 2번의 이동으로 모든 요소를 2로 맞출 수 있기 때문입니다.해결 접근 방식이 문제의 핵심은 중앙값(median)에 있습니다. 모든 요소를 중앙값으로 맞추는 것이 다른 어떤 값보다 총

  15. 파이썬으로 문자열의 회문 부분 문자열 개수 구하기

    문제 개요하나의 문자열이 주어졌을 때, 이 문자열 안에 존재하는 회문(palindrome) 부분 문자열의 개수를 세는 문제입니다. 여기서 시작 인덱스 또는 끝 인덱스가 다르면, 문자 구성이 완전히 같더라도 서로 다른 부분 문자열로 간주한다는 점이 중요합니다.예를 들어 입력이 aaa라면, a, a, a, aa, aa, aaa처럼 총 6개의 회문 부분 문자열이 존재하므로 정답은 6이 됩니다.해결 접근 방법가장 직관적인 풀이는 만들 수 있는 모든 부분 문자열을 하나씩 생성한 뒤, 각각이 회문인지 검사하는 것입니다. 알고리즘의 흐름은 다음

  16. 파이썬(Python)으로 푸는 최대 스왑(Maximum Swap) 문제

    문제 개요음이 아닌 정수가 하나 주어졌을 때, 두 자릿수를 최대 한 번만 교환하여 만들 수 있는 가장 큰 수를 구하는 문제입니다. 예를 들어 입력값이 2736이라면 출력은 7236이 됩니다. 이는 첫 자리의 2와 그 다음 자리의 7을 서로 바꾸었기 때문입니다.해결 접근 방법이 문제는 다음 단계에 따라 해결할 수 있습니다:num: 주어진 숫자의 각 자릿수를 분리하여 리스트로 만듭니다.num1: num을 내림차순으로 정렬합니다.index: 0으로 초기화합니다.index가 num의 길이보다 작은 동안 아래 과정을 반복합니다:num1[in

  17. 파이썬으로 푸는 '키와 방' 문제: BFS로 모든 방 방문 가능 여부 확인하기

    문제 설명N개의 방이 있고, 우리는 0번 방에서 시작한다고 가정해 봅시다. 각 방에는 0부터 N-1까지 서로 다른 번호가 매겨져 있으며, 각 방 안에는 다른 방을 열 수 있는 열쇠가 몇 개 들어 있을 수 있습니다. 즉, 각 방 i는 rooms[i]라는 열쇠 목록을 가지고 있고, 각 열쇠 rooms[i][j]는 0부터 N-1 사이의 정수입니다(여기서 N은 방의 총 개수). 만약 rooms[i][j] = v라면, 그 열쇠로 v번 방을 열 수 있습니다.예를 들어 입력이 [[1], [2], [3], []]이라면 출력은 true가 됩니다.문

  18. 파이썬으로 반복 문자가 없는 길이 K의 부분 문자열 개수 구하기

    문자열 S가 주어졌을 때, 중복되는 문자가 하나도 없는 길이 K의 부분 문자열이 몇 개 존재하는지 구하는 문제입니다.예를 들어 S = heyfriendshowareyou이고 K = 5라면, 조건을 만족하는 부분 문자열은 다음과 같이 총 15개입니다.[heyfr, eyfri, yfrie, frien, riend, iends, endsh, ndsho, dshow, showa, howar, oware, warey, areyo, reyou]해결 접근 방식: 슬라이딩 윈도우이 문제는 슬라이딩 윈도우(Sliding Window) 기법과 문자별

  19. Python에서 인덱스 목록으로 리스트의 여러 요소 한 번에 접근하기

    파이썬에서는 대괄호([])와 인덱스 번호를 사용해 리스트의 개별 요소에 쉽게 접근할 수 있습니다. 하지만 여러 개의 인덱스에 해당하는 요소들을 한 번에 가져와야 할 때는 이 방식을 그대로 적용할 수 없습니다. 이번 글에서는 이런 상황에서 활용할 수 있는 두 가지 방법을 소개합니다.방법 1: 두 개의 리스트 활용하기가장 직관적인 방법입니다. 원본 리스트와 별도로, 가져오고 싶은 인덱스들을 담은 또 하나의 리스트를 준비합니다. 그다음 리스트 컴프리헨션(list comprehension)으로 인덱스를 순회하면서 해당 값을 원본 리스트에

  20. 파이썬으로 주어진 문자 조합으로 만들 수 있는 단어 찾기

    이 글에서는 주어진 문자 집합을 사용해 만들 수 있는 단어를 출력하는 파이썬 프로그램을 살펴보겠습니다. 여기서는 참조 단어들이 담긴 리스트 하나와, 단어를 구성하는 데 사용할 문자들이 담긴 또 다른 리스트를 입력으로 받습니다. 아래 프로그램에서는 두 개의 함수를 정의합니다. 첫 번째 함수는 문자 목록의 글자들을 이용해 단어를 구성할 수 있는지 판단하기 위한 기준을 마련하고, 두 번째 함수는 만들어진 단어가 주어진 단어 목록에 속하는지 확인하여 매칭합니다. 예제 코드 def Possible_Words(character): x

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:135/450  20-컴퓨터/Page Goto:1 129 130 131 132 133 134 135 136 137 138 139 140 141