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

Python

  1. Python에서 스택을 활용해 큐를 다른 큐에 비내림차순으로 정렬할 수 있는지 확인하는 방법

    첫 n개의 자연수가 정렬되지 않은 상태로 들어 있는 큐(Queue)가 있다고 가정해 보겠습니다. 이 문제의 목표는 주어진 큐의 요소들을 스택을 중간 버퍼로 활용하여 다른 큐에 비내림차순(non-decreasing)으로 정렬할 수 있는지 판별하는 것입니다.허용되는 연산이 문제를 해결하기 위해 다음 세 가지 연산만 사용할 수 있습니다.스택에 요소를 push 하거나 pop 하기주어진 큐에서 요소를 삭제(dequeue)하기다른 큐에 요소를 삽입(enqueue)하기예를 들어 입력이 Que = [6, 1, 2, 3, 4, 5]라면 출력은 Tr

  2. Python으로 합이 k가 되도록 배열을 쌍으로 나눌 수 있는지 확인하는 방법

    숫자로 이루어진 배열과 하나의 숫자 k가 주어졌을 때, 이 배열을 모든 쌍의 합이 정확히 k가 되도록 나눌 수 있는지 확인해야 하는 문제입니다.예를 들어 입력이 arr = [1, 2, 3, 4, 5, 6], k = 7이라면, (2, 5), (1, 6), (3, 4)처럼 각 쌍의 합이 7이 되는 짝을 만들 수 있으므로 결과는 True입니다.문제 해결 접근 방식배열이 이미 오름차순으로 정렬되어 있다는 점을 활용하면, 투 포인터(Two Pointer) 기법으로 효율적으로 해결할 수 있습니다. 가장 작은 값과 가장 큰 값을 차례대로 짝지으

  3. Python으로 두 문자열 간 변환 가능 여부 확인하기: 모음은 모음끼리, 자음은 자음끼리

    문제 개요두 개의 문자열 s와 t가 주어졌을 때, 특정 조건 하에서 한 문자열을 다른 문자열로 변환할 수 있는지 확인하는 문제입니다. 변환 규칙은 다음과 같습니다.이미 모음인 문자는 반드시 다른 모음으로만 변경할 수 있습니다.이미 자음인 문자는 반드시 다른 자음으로만 변경할 수 있습니다.즉, 모음을 자음으로 바꾸거나 자음을 모음으로 바꾸는 것은 허용되지 않습니다. 이러한 규칙 안에서 s를 t로 변환할 수 있는지(혹은 그 반대도 동일하게 적용됨) 판별해야 합니다.예시예를 들어 s = udpmva, t = itmmve라고 가정해 보겠습

  4. Python으로 제약 조건에 맞게 다른 문자열에서 문자열을 생성할 수 있는지 확인하는 방법

    문제 개요소문자로 이루어진 두 문자열 s와 t가 주어졌을 때, 다음과 같은 제약 조건을 만족하며 s로부터 t를 생성할 수 있는지 확인해야 합니다.t의 각 문자는 s에 존재해야 합니다. 예를 들어 t에 a가 두 개 있다면, s에도 정확히 두 개의 a가 있어야 합니다.t의 어떤 문자가 s에 없다면, 해당 문자보다 ASCII 값이 하나 및 둘 앞선 두 문자가 s에 있는지 확인합니다. 예를 들어 f가 t에는 있지만 s에는 없다면, s의 d와 e를 조합하여 f를 대신 만들 수 있습니다.예를 들어 입력이 s = pghn, t = pin이라면

  5. Python으로 문자열 2칸 회전 비교하기: 두 문자열이 회전 관계인지 확인하는 방법

    두 개의 문자열 s와 t가 주어졌을 때, t를 왼쪽 또는 오른쪽 어느 방향으로든 정확히 2칸 회전하여 s를 만들 수 있는지 확인하는 문제입니다.예를 들어 입력이 s = kolkata, t = takolka라고 가정해 보겠습니다. 이 경우 takolka를 왼쪽으로 두 번 회전하면 kolkata를 얻을 수 있으므로 출력은 True가 됩니다.문제 해결 접근 방식이 문제는 다음 단계를 통해 해결할 수 있습니다.s와 t의 길이가 다르면 False를 반환합니다.right_rot과 left_rot이라는 빈 문자열을 준비합니다.t의 길이를 l에

  6. 파이썬(Python)으로 문자열 재배열을 통해 회문을 만들 수 있는지 확인하는 방법

    개요주어진 문자열의 문자들을 임의로 재배열했을 때, 그 결과가 회문(palindrome)이 될 수 있는지 판별하는 문제입니다. 여기서 회문이란 앞에서 읽으나 뒤에서 읽으나 같은 문자열을 의미합니다.예를 들어 입력 문자열이 s = aarcrce라고 가정해 보겠습니다. 이 문자들의 순서를 바꾸면 racecar라는 회문을 만들 수 있으므로, 출력은 True가 됩니다.접근 방식이 문제를 해결하는 핵심 아이디어는 문자의 등장 빈도에 있습니다.회문이 성립하려면 대칭 구조가 필요합니다.길이가 짝수인 회문이라면 모든 문자가 반드시 짝수 번 나타나

  7. Python에서 문자열 반복으로 다른 문자열을 만들 수 있는지 확인하는 방법

    두 개의 문자열 s와 t가 주어졌을 때, 문자열 s를 몇 번 이어 붙여야(반복해야) 문자열 t를 만들 수 있는지 구하는 문제입니다. 만약 s를 아무리 반복해도 t를 생성할 수 없다면 -1을 반환합니다.예를 들어 s = tom, t = tomtomtom이라고 가정해 보겠습니다. 이 경우 tom을 3번 이어 붙이면 tomtomtom이 되므로 출력 결과는 3입니다.문제 해결 접근 방식이 문제는 다음 단계를 따라 해결할 수 있습니다.t의 길이가 s의 길이로 나누어 떨어지지 않으면-1을 반환합니다.cnt := (t의 길이 ÷ s의 길이)의

  8. Python으로 문자열에서 특정 부분 문자열을 반복 삭제해 빈 문자열로 만들 수 있는지 확인하는 방법

    문제 이해하기두 개의 문자열 s와 t가 주어졌다고 가정해 봅시다. 우리는 s에서 t를 원하는 만큼 여러 번 삭제할 수 있으며, 한 번에 하나의 t만 존재한다고 가정합니다. 목표는 t를 필요한 만큼 반복해서 제거했을 때 s를 완전히 비울 수 있는지 판단하는 것입니다.예를 들어 s = pipipinnn, t = pin이라면 결과는 True입니다. pipipinnn에서 pin을 제거하면 pipinn이 되고, 다시 pin을 제거하면 pin이 되며, 마지막으로 한 번 더 제거하면 빈 문자열이 되기 때문입니다.해결 접근 방법이 문제는 다음 단

  9. 파이썬으로 문자열에 짝수 길이 회문 부분 문자열이 포함되어 있는지 확인하는 방법

    문제 개요문자열 s가 주어졌을 때, 이 문자열 안에 짝수 길이의 회문(palindrome) 부분 문자열이 존재하는지 확인해야 합니다.예를 들어 입력이 s = afternoon이라면, afternoon에는 짝수 길이의 회문인 noon이 포함되어 있으므로 결과는 True가 됩니다.접근 방식핵심 아이디어는 매우 간단합니다. 길이가 2 이상인 짝수 길이 회문은 반드시 가운데 두 문자가 서로 같아야 한다는 성질을 이용합니다. 따라서 문자열 전체를 탐색할 필요 없이, 인접한 두 문자가 동일한 경우가 하나라도 존재하는지만 확인하면 됩니다. 그

  10. Python에서 문자열이 aⁿbⁿ 패턴을 따르는지 확인하는 방법

    문제 개요문자열 s가 주어졌을 때, 이 문자열이 aⁿbⁿ 패턴을 따르는지 확인해야 합니다. aⁿbⁿ 패턴이란 문자 a가 n번 연속으로 나타난 뒤, 문자 b가 정확히 n번 연속으로 나타나는 형태를 의미합니다.예를 들어 n = 3이라면 문자열은 aaabbb가 됩니다. 즉, a의 개수와 b의 개수가 정확히 같아야 하며, 모든 a는 모든 b보다 앞에 위치해야 합니다.따라서 입력이 s = aaaaabbbbb라면 이 문자열은 a⁵b⁵ 형태를 따르므로 결과는 True가 됩니다.해결 전략이 문제는 다음 단계를 통해 해결할 수 있습니다.size :

  11. 파이썬으로 확인하기: 한 글자 삭제만으로 문자열의 모든 문자 빈도를 동일하게 만들 수 있을까?

    문제 개요 소문자로만 이루어진 문자열 s가 주어졌을 때, 최대 한 글자를 삭제해서 s를 유효한 문자열로 바꿀 수 있는지 확인하는 것이 이번 문제의 목표입니다. 여기서 유효한 문자열이란, 문자열 안에 등장하는 모든 고유 문자의 빈도(등장 횟수)가 서로 같은 문자열을 뜻합니다. 예를 들어 입력이 s = xyyzx라면 결과는 True입니다. z 하나만 삭제하면 문자열이 xyyx가 되고, x와 y가 각각 두 번씩 등장해 빈도가 일치하기 때문입니다. 접근 방법 풀이의 핵심은 각 문자의 등장 횟수를 먼저 계산한 뒤, 빈도 값들을 종류별로 묶

  12. Python으로 이진 문자열에 m개의 연속된 1 또는 0이 있는지 확인하는 방법

    문제 개요 이진 문자열 s와 정수 m이 주어졌을 때, 해당 문자열 안에 m개의 연속된 1 또는 m개의 연속된 0이 존재하는지 확인해야 하는 문제입니다. 예를 들어 입력이 s = 1110111000111, m = 3이라면, 문자열에 세 개의 연속된 0(000)과 세 개의 연속된 1(111)이 모두 존재하므로 결과는 True가 됩니다. 해결 접근 방식 이 문제는 문자열을 한 번만 순회하면서 현재 위치까지 이어진 연속 문자의 개수를 추적하는 방식으로 효율적으로 해결할 수 있습니다. 구체적인 단계는 다음과 같습니다. str_size에

  13. Python으로 문자열이 콜린드롬(Colidrome)인지 확인하는 방법

    문자열 s가 주어졌을 때, 해당 문자열이 콜린드롬(colidrome)인지 판별해야 합니다. 콜린드롬이란 길이 6짜리 팰린드롬(회문) 여러 개를 이어 붙여 만든 문자열을 의미합니다.예를 들어 입력이 s = aabbaamnoonm라면 결과는 True가 됩니다. 이 문자열은 aabbaa와 mnoonm이라는 두 개의 길이 6 팰린드롬으로 구성되어 있기 때문입니다.문제 해결 접근 방법이 문제는 다음 단계를 통해 해결할 수 있습니다.먼저 문자열 s의 길이가 6의 배수인지 확인합니다. 6의 배수가 아니라면 콜린드롬일 수 없으므로 False를 반

  14. Python에서 문자열이 아이소그램(Isogram)인지 확인하는 방법

    문자열 s가 주어졌을 때, 해당 문자열이 아이소그램(Isogram)인지 판별하는 문제를 살펴보겠습니다. 아이소그램이란 모든 문자가 정확히 한 번씩만 등장하는 문자열을 의미합니다.예를 들어 입력이 s = education이라면 출력은 True가 됩니다. education의 모든 문자(e, d, u, c, a, t, i, o, n)가 각각 한 번씩만 나타나기 때문입니다.해결 접근 방식이 문제는 다음 단계를 통해 해결할 수 있습니다.빈 리스트 char_list를 생성합니다.문자열의 각 문자를 순회하면서 다음을 확인합니다.문자가 알파벳인

  15. Python에서 한 문자열이 다른 문자열의 접미사인지 확인하는 방법

    문제 정의두 개의 문자열 s와 t가 주어졌을 때, s가 t의 접미사(suffix)인지 확인하는 문제입니다. 접미사란 어떤 문자열의 끝부분에 해당하는 부분 문자열을 의미합니다.예를 들어, 입력이 s = ate, t = unfortunate라고 한다면, unfortunate는 ...nate로 끝나기 때문에 ate가 그 접미사에 해당합니다. 따라서 출력은 True가 됩니다.해결 접근 방식이 문제는 두 문자열을 뒤에서부터 한 글자씩 비교하는 방식으로 해결할 수 있습니다. 구체적인 단계는 다음과 같습니다.s_len := s의 길이로 설정t_

  16. Python에서 문자열이 주어진 이름의 타이핑 결과인지 확인하는 방법

    문제 설명두 개의 소문자 문자열 s와 t가 있다고 가정해 봅시다. 사람이 키보드로 이름을 입력할 때, 가끔 모음 키를 실수로 오래 누르게 되어 해당 모음이 한 번 이상 반복되어 입력되는 경우가 있습니다. 우리가 확인해야 할 것은 문자열 t가 문자열 s를 타이핑한 결과일 가능성이 있는지 여부입니다.예를 들어, s = mine, t = miiine인 경우를 생각해 보겠습니다. 이때 출력은 True입니다. 왜냐하면 모음 i가 세 번 반복되었고(키를 오래 누른 것), 나머지 문자들은 정상적으로 입력되었기 때문입니다.접근 방법 및 알고리즘이

  17. Python으로 주어진 세 각도로 양의 넓이를 가진 삼각형을 만들 수 있는지 확인하는 방법

    문제 개요 세 개의 각도가 주어졌을 때, 이 각도들로 양의 넓이를 가지는 삼각형을 만들 수 있는지 판별하는 문제입니다. 예를 들어 입력이 a = 40, b = 120, c = 20이라면, 세 각의 합이 40 + 120 + 20 = 180이므로 결과는 True가 됩니다. 해결 접근 방법 이 문제는 다음과 같은 논리로 해결할 수 있습니다. 세 각도 a, b, c가 모두 0이 아니고, 그 합(a + b + c)이 정확히 180인 경우: (a + b) >= c 또는 (b + c) >= a 또는 (a + c) >= b

  18. Python에서 주어진 단어들을 조합해 두 글자 문자열을 만들 수 있는지 확인하는 방법

    문제 이해하기길이가 2인 문자열 s와, 모든 단어의 길이가 2인 단어 목록 w가 주어졌다고 가정해 봅시다. 이때 w에 있는 단어들을 서로 이어 붙여서 만든 문자열 안에 s가 부분 문자열로 포함될 수 있는지 확인해야 합니다.예를 들어, 입력이 s = no, w = [ol, on, ni, to]라면 출력은 True입니다. 단어들을 onol처럼 이어 붙이면 그 안에 no가 포함되기 때문입니다.해결 접근 방식이 문제는 다음 단계를 통해 해결할 수 있습니다.n := w에 있는 단어의 개수char_0 := False, char_1 := Fal

  19. 파이썬에서 리스트의 모든 요소가 고유한지 확인하는 방법

    숫자로 이루어진 리스트 nums가 주어졌을 때, 리스트의 모든 요소가 서로 중복되지 않고 고유한지 확인해야 하는 경우가 있습니다.예를 들어, 입력이 nums = [2, 3, 6, 5, 1, 8]이라면 모든 요소가 고유하므로 결과는 True가 됩니다.문제 해결 접근 방식이 문제는 집합(set) 자료구조를 활용하면 간단하게 해결할 수 있습니다. 집합은 중복된 값을 저장하지 않는 특성이 있기 때문입니다. 해결 단계는 다음과 같습니다.리스트의 길이를 n에 저장합니다.새로운 빈 집합 s를 생성합니다.0부터 n까지 반복하면서 리스트의 각 요소

  20. Python으로 숫자의 모든 비트가 설정되어 있는지 확인하는 방법

    문제 개요숫자 n이 주어졌을 때, 해당 숫자의 모든 비트가 1로 설정되어 있는지 확인해야 합니다.예를 들어 입력이 n = 255라면 출력은 True가 됩니다. 255의 이진수 표현은 11111111이기 때문입니다.해결 접근 방법이 문제는 다음 단계를 따라 해결할 수 있습니다.숫자가 0이면 False를 반환합니다.숫자가 0보다 큰 동안 다음을 반복합니다.숫자가 짝수, 즉 마지막 비트가 0이면 False를 반환합니다.숫자를 오른쪽으로 1비트 시프트하여 다음 비트를 검사합니다.반복문이 정상적으로 끝나면 모든 비트가 설정된 것이므로 Tru

Total 8989 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:207/450  20-컴퓨터/Page Goto:1 201 202 203 204 205 206 207 208 209 210 211 212 213