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

Python

  1. 파이썬에서 문자열을 N 크기씩 분할하는 방법

    문자열 s와 정수 n이 주어졌을 때, s를 길이가 n인 조각들로 나누어야 하는 경우가 자주 있습니다.예를 들어, 입력이 s = abcdefghijklmn, n = 4라면 출력은 [abcd, efgh, ijkl, mn]이 됩니다. 이때 마지막 조각은 남은 문자만 포함하기 때문에 길이가 n보다 짧을 수 있다는 점에 유의하세요.해결 접근 방법이 문제는 다음 단계를 따라 해결할 수 있습니다.인덱스 변수 i를 0으로 초기화합니다.결과를 저장할 빈 리스트 f를 생성합니다.i가 문자열의 길이보다 작은 동안 반복합니다.s[i]부터 s[i+n-1]

  2. Python으로 도시 블록을 순서대로 방문할 때의 총 거리 구하기

    이번 문제에서는 각 칸이 고유한 문자열로 이루어진 행렬(도시 블록 지도)과, 방문해야 할 블록 이름이 담긴 리스트가 주어집니다. 현재 위치가 matrix[0][0]일 때, 주어진 순서대로 모든 블록을 방문하기 위해 이동해야 하는 맨해튼 거리(Manhattan Distance)의 총합을 구하는 것이 목표입니다.문제 예시예를 들어 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.qbcdezghi방문해야 할 블록 리스트는 다음과 같습니다.blocks = [h, b, c]이 경우 출력값은 6입니다. 그 이유는 다음과 같습니다.시작 위치 m

  3. 파이썬으로 콜라츠(Collatz) 수열의 길이 구하기

    양의 정수 n이 주어졌을 때, 해당 숫자의 콜라츠(Collatz) 수열 길이를 구하는 문제입니다. 콜라츠 수열은 다음 규칙에 따라 순차적으로 생성됩니다.n이 짝수인 경우: n = n / 2n이 홀수인 경우: n = 3n + 1이 과정을 반복하다가 n이 1이 되면 수열은 종료됩니다.예를 들어 입력값이 n = 13이라면, 수열은 [13, 40, 20, 10, 5, 16, 8, 4, 2, 1]이 되고, 요소가 총 10개이므로 출력 결과는 10입니다.해결 방법이 문제는 다음 단계로 해결할 수 있습니다.num이 0과 같다면 0을 반환합니다.

  4. 파이썬에서 행렬의 각 열을 오름차순으로 정렬하는 방법

    문제 소개 행렬(matrix)이 주어졌을 때, 각 열(column)의 요소들을 오름차순으로 정렬하는 문제입니다. 일반적인 정렬은 행 전체를 대상으로 하지만, 이 문제는 열 단위로 정렬해야 한다는 점이 특징입니다. 예를 들어 입력이 다음과 같다면, 1121316641118 출력은 다음과 같습니다. 1646118112131 첫 번째 열은 [11, 6, 1] → [1, 6, 11], 두 번째 열은 [21, 6, 11] → [6, 11, 21], 세 번째 열은 [31, 4, 8] → [4, 8, 31]로 각각 정렬된 것을 확인할 수 있습니

  5. 파이썬으로 두 문장에서 공통 단어 개수 구하기

    두 개의 문자열 s0과 s1이 있고, 각각 하나의 문장을 나타낸다고 가정해 봅시다. 이때 두 문장에 공통으로 등장하는 고유한 단어의 개수를 구하는 것이 목표입니다.주의할 점은 단어를 비교할 때 대소문자를 구분하지 않는다는 것입니다. 예를 들어 tom과 ToM은 같은 단어로 취급됩니다.문제 예시입력이 다음과 같다고 해보겠습니다.s0 = i love python codings1 = coding in python is easy이 경우 두 문장에 공통으로 포함된 단어는 [python, coding] 두 개이므로, 출력 결과는 2가 됩니다.

  6. 파이썬으로 코넬 시퀀스(Connell Sequence)의 n번째 항 구하기

    코넬 시퀀스(Connell Sequence)는 홀수와 짝수를 일정한 규칙에 따라 교차 배치한 흥미로운 수열입니다. 이 수열은 다음과 같은 방식으로 만들어집니다.첫 번째 홀수 1개를 취합니다: 1다음 짝수 2개를 취합니다: 2, 4그다음 홀수 3개를 취합니다: 5, 7, 9이어서 짝수 4개를 취합니다: 10, 12, 14, 16이런 식으로 그룹의 크기를 하나씩 늘려가며 홀수와 짝수를 번갈아 나열하면 다음과 같은 수열이 완성됩니다.1, 2, 4, 5, 7, 9, 10, 12, 14, 16, 17, 19, 21, ...예를 들어 입력값이

  7. Python으로 문자열의 연속 중복 문자 제거하기

    문제 정의R과 L로만 구성된 문자열 s가 주어졌다고 가정해 보겠습니다. 우리가 해야 할 일은 최소한의 문자만 제거하여 연속된 RR이나 LL이 나타나지 않도록 만드는 것입니다.예를 들어 입력이 LLLRLRR이라면, 출력은 LRLR이 됩니다. 즉, 앞부분의 연속된 LL 두 개와 뒷부분의 연속된 RR 하나를 제거한 결과입니다.해결 접근 방법이 문제는 간단한 그리디(Greedy) 방식으로 효율적으로 해결할 수 있습니다. 핵심 아이디어는 문자열을 한 번만 순회하면서 직전 문자와 현재 문자를 비교하는 것입니다.seen: 마지막으로 결과에 포함

  8. Python – n×n 보드에서 네 모서리 대각선 셀을 제거한 뒤 남은 셀 개수 세기

    문제 이해하기 숫자 n이 주어지며, 이 값은 n × n 크기 보드의 한 변 길이를 나타냅니다. 우리가 해야 할 일은 네 개의 귀퉁이(모서리)에서 시작하는 대각선 방향에 놓인 모든 셀을 삭제한 후, 남아 있는 셀의 개수를 반환하는 것입니다. 예를 들어 입력이 n = 4라면 보드는 다음과 같습니다. 여기서 X는 삭제되는 셀, O는 남는 셀입니다. XOOXOXXOOXXOXOOX 삭제되는 셀은 총 8개이므로, 출력 결과는 8이 됩니다. 해결 접근 방법 이 문제는 실제로 보드를 만들어 시뮬레이션할 필요 없이, 아래의 간단한 수식 하나로 해

  9. Python으로 리스트에서 x와 x+1이 함께 존재하는 요소 개수 세기

    nums라는 숫자 리스트가 주어졌다고 가정해 봅시다. 이때 우리가 구해야 할 것은, 자기 자신보다 1 큰 값(x + 1)도 같은 리스트 안에 함께 존재하는 요소 x의 개수입니다. 예를 들어 입력이 [2, 3, 3, 4, 8]이라면 출력은 3이 됩니다. 그 이유는 2(→3 존재), 3(→4 존재), 그리고 또 하나의 3(→4 존재)까지 총 3개의 요소가 조건을 만족하기 때문입니다. 반면 8은 9가 리스트에 없으므로 포함되지 않습니다. 해결 접근 방법 이 문제는 집합(set)을 활용하면 간단하게 해결할 수 있습니다. 단계별로 살펴보겠

  10. 파이썬으로 문자열 속 공룡 수 세기

    animals라는 문자열과 dinosaurs라는 또 다른 문자열이 있다고 가정해 보겠습니다. animals의 모든 글자는 서로 다른 동물의 종류를 나타내며, dinosaurs 문자열의 각 고유 문자는 서로 다른 공룡을 나타냅니다. 우리가 구해야 할 것은 animals 문자열 안에 포함된 공룡의 총 마릿수입니다.예를 들어, 입력이 animals = xyxzxyZ, dinosaurs = yZ라고 한다면 출력은 3이 됩니다. 공룡의 종류는 y와 Z 두 가지이고, animals 문자열에는 y가 두 번, Z가 한 번 등장하기 때문입니다.해결

  11. Python으로 짝수·홀수 인덱스 요소를 서로 교환하는 방법

    문제 개요숫자로 이루어진 리스트 nums가 주어졌을 때, 연속된 짝수 인덱스끼리 서로 교환하고, 연속된 홀수 인덱스끼리도 서로 교환하는 문제입니다.예를 들어 입력이 [1,2,3,4,5,6,7,8,9]라면 출력은 다음과 같습니다.[3, 4, 1, 2, 7, 8, 5, 6, 9]해결 접근 방법핵심 아이디어는 한 번의 반복으로 두 쌍의 교환을 동시에 처리하는 것입니다. 인덱스를 4씩 건너뛰면서 탐색하면, 짝수 인덱스 그룹(0, 2 / 4, 6 / ...)과 홀수 인덱스 그룹(1, 3 / 5, 7 / ...)을 각각 효율적으로 스왑할 수

  12. Python으로 주어진 리스트가 최대 힙(Max Heap)인지 확인하는 방법

    문제 개요 숫자로 이루어진 리스트 nums가 주어졌을 때, 이 리스트가 최대 힙(Max Heap)의 조건을 만족하는지 확인해야 합니다. 배열로 표현된 최대 힙은 다음 두 가지 규칙을 따라야 합니다. 2*i + 1이 유효한 인덱스 범위 내에 있다면 nums[i] >= nums[2*i + 1]이 성립해야 합니다. 2*i + 2가 유효한 인덱스 범위 내에 있다면 nums[i] >= nums[2*i + 2]가 성립해야 합니다. 즉, 모든 부모 노드의 값은 자식 노드의 값보다 크거나 같아야 합니다. 예를 들어 입력이 [5, 3

  13. Python으로 유권자 사기 감지하기: 중복 투표 확인 알고리즘

    문제 개요투표 데이터가 리스트 형태로 주어진다고 가정해 봅시다. 리스트의 각 요소는 두 개의 값을 가지는 배열 [c_id, v_id]이며, 여기서 c_id는 후보자(candidate)의 ID, v_id는 투표자(voter)의 ID를 의미합니다.우리의 목표는 특정 투표자가 두 번 이상 투표했는지, 즉 부정 행위가 발생했는지를 확인하는 것입니다.예를 들어 입력이 다음과 같다면,[[5, 1], [5, 0], [5, 4], [5, 3], [5, 0]]출력은 True가 됩니다. 그 이유는 [5, 0], 즉 ID가 0인 투표자가 동일한 후보에

  14. 파이썬으로 텍스트 내 두 단어 사이의 최소 거리 구하기

    두 개의 문자열 word0, word1과 하나의 텍스트가 주어졌을 때, 텍스트 안에서 두 단어가 등장하는 위치 사이의 최소 거리를 찾는 문제를 살펴보겠습니다. 여기서 거리는 두 단어 사이에 있는 단어의 개수로 측정하며, 만약 두 단어 중 하나라도 텍스트에 존재하지 않으면 -1을 반환해야 합니다.예를 들어 입력이 다음과 같다고 가정해 보겠습니다.text = cat dog abcd dog cat cat abcd dog wxyzword0 = abcdword1 = wxyz이 경우 출력은 1입니다. abcd와 wxyz 사이에 정확히 한 단어

  15. 파이썬으로 풀어보는 도미노 보드 채우기 문제

    두 개의 숫자 n과 m이 주어지며, 이는 n × m 크기의 보드를 나타냅니다. 또한 무한개의 1 × 2 크기 도미노가 있다고 가정합니다. 이때 도미노끼리 서로 겹치지 않고, 모든 도미노가 보드 안에 완전히 들어오도록 배치할 수 있는 최대 도미노 개수를 구하는 것이 문제입니다.예를 들어 n = 5, m = 3이 입력으로 주어진다면, 출력은 7이 됩니다.해결 접근 방법이 문제는 의외로 간단한 수학적 직관으로 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.각 도미노는 정확히 2칸을 차지합니다.따라서 보드의 전체 칸 수(t = n

  16. 파이썬으로 더블·리버스·스왑 연산을 반복해 만드는 패턴 시퀀스의 n번째 값 구하기

    문제 정의 숫자 n이 주어졌을 때, 아래와 같은 규칙으로 생성되는 수열에서 n번째 값을 찾아야 합니다. xxy xxyxxy yxxyxx xyyxyy xyyxyyxyyxyy ... 수열 생성 규칙 첫 번째 항은 xxy이며, 다음 항부터는 아래 세 가지 연산을 순서대로 반복 적용해 만듭니다. 더블(Double) — 현재 문자열을 자기 자신과 이어 붙여 길이를 두 배로 만듭니다. 리버스(Reverse) — 직전 연산이 더블이었다면, 문자열을 거꾸로 뒤집습니다. 스왑(Swap) — 직전 연산이 리버스였다면, 모든 x를 y로, y를 x

  17. 파이썬에서 한 번의 반복으로 부분 문자열 제거하기

    문제 소개 문자열 s가 주어졌을 때, 문자열 전체를 한 번의 순회만으로 처리하면서 포함된 모든 y와 xz를 제거해야 합니다. 예를 들어 입력이 s = xyxxzyyxxzx라면, 최종 출력은 xxxx가 됩니다. 해결 접근 방법 파이썬의 내장 문자열 메서드인 replace()를 활용하면 이 문제를 아주 간단하게 해결할 수 있습니다. 해결 단계는 다음과 같습니다. 먼저 문자열에서 xz를 제거한 결과를 임시 변수(temp)에 저장합니다. 이후 temp에서 y를 모두 제거한 값을 반환합니다. replace() 메서드는 메서드 체이닝(m

  18. Python으로 리스트에서 연속된 짝수 요소 서로 교환하기

    문제 개요숫자로 이루어진 리스트 nums가 주어졌을 때, 리스트에 등장하는 연속된 짝수 정수 두 개를 서로 교환하는 문제입니다.예를 들어, 입력이 다음과 같다면:nums = [4, 5, 6, 8, 10]출력은 아래와 같습니다.[6, 5, 4, 10, 8]위 예시에서 4와 6이 첫 번째 연속 짝수 쌍이므로 서로 자리를 바꾸고, 8과 10이 두 번째 연속 짝수 쌍이므로 역시 서로 교환됩니다. 그 사이의 홀수인 5는 그대로 유지됩니다.해결 접근 방법이 문제는 한 번의 순회만으로 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.아직

  19. Python으로 팩토리얼(계승) 계산하기: 재귀 함수 완벽 가이드

    팩토리얼(계승)이란?10 이하의 숫자 n이 주어졌을 때, 해당 숫자의 팩토리얼(계승)을 구하는 문제를 생각해 보겠습니다. 숫자 n의 팩토리얼은 다음과 같이 정의됩니다.n! = n × (n-1) × (n-2) × ... × 1예를 들어, 입력값이 6이라면 6 × 5 × 4 × 3 × 2 × 1의 계산 결과인 720이 출력됩니다.문제 해결 접근 방법이 문제는 재귀 함수를 사용하면 간단하게 해결할 수 있습니다. 해결 과정은 다음과 같습니다.solve() 함수를 정의하고, 매개변수로 n을 받습니다.n이 1 이하이면 1을 반환합니다. (재귀

  20. 파이썬 문자열에서 등차 간격의 'programmingquestion' 부분 수열 찾기

    소문자로만 이루어진 문자열 s가 주어졌을 때, 다음 두 조건을 동시에 만족하는 부분 수열(subsequence)을 선택할 수 있는지 판별하는 문제입니다.선택된 문자들의 인접한 인덱스 차이가 모두 같아야 합니다(등차 간격).선택된 문자들을 순서대로 이어 붙이면 programmingquestion이라는 문자열이 되어야 합니다.예를 들어 입력 문자열이 pzrzozgzrzazmzmziznzgzqzuzezsztzizozn이라면 출력 결과는 True입니다.문제 해결 접근 방법programmingquestion은 첫 두 글자가 p와 r이므로,

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