전체 글

전체 글

    파이썬(Python) 알고리즘 문제풀이 하노이의 탑 [프로그래머스 / 문자열]

    문제 설명 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대로 쌓여 있습니다. 게임의 목적은 다음 두 가지 조건을 만족시키면서, 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것입니다. 한 번에 하나의 원판만 옮길 수 있습니다. 큰 원판이 작은 원판 위에 있어서는 안됩니다. 하노이 탑의 세 개의 기둥을 왼쪽 부터 1번, 2번, 3번이라고 하겠습니다. 1번에는 n개의 원판이 있고 이 n개의 원판을 3번 원판으로 최소 횟수로 옮기려고 합니다. 1번 기둥에 있는 원판의 개수 n이 매개변수로 주어질 때, n개의 원판을 3번 원판으로..

    파이썬(Python) 알고리즘 문제풀이 신규 아이디 추천 [프로그래머스 / 문자열]

    문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이..

    파이썬(Python) 알고리즘 문제풀이 이진 변환 반복하기 [프로그래머스 / 문자열]

    문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 s의 길이는 1 이상 150,000 이하입니다. s에는 '1'이 최소 하나 이상 포함되어 있습니다. 입출력 예..

    파이썬(Python) 알고리즘 문제풀이 해쉬 [프로그래머스 / 문자열]

    문제 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'..

    파이썬(Python) 알고리즘 문제풀이 문자열 압축 [프로그래머스 / 문자열]

    문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘..

    파이썬(Python) 알고리즘 문제풀이 짝지어 제거하기 [프로그래머스 / 문자열]

    문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → '' 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니..

    파이썬(Python) 알고리즘 문제풀이 3진법 뒤집기 [프로그래머스 / 문자열]

    문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예시 s result 45 7 125 229 풀이 코드 진법 변환 함수를 만들 수 있다면 굉장히 쉬운 문제. 진법 변환 함수 같은 간단한 함수는 외워두자. def radixChange(num, radix): if num == 0: return 0 nums = [] while num: num, digit = divmod(num, radix) nums.append(str(digit)) return ''.join(reversed(nums)) def solutio..

    2023.05.23 (화요일) ~ 2023.05.28 (일요일) 주간 및 일일 학습계획

    주간목표 2023.05.22 ~ 2023.05.27 컨디션 관리 주 3회 이상 운동 월, 수, 목 미라클 모닝 인증 문제 풀이 전략 문자열 복습 완료 정보처리기사 관련 서류 제출 1억뷰 N잡 흥달쌤 정보처리기사 서적 및 강의 구매 일일목표 2023.05.23 (화요일) 문제 풀이 전략 문자열 복습 시저 암호 (Level 1) 이상한 문자 만들기 (Level 1) 튜플 (Level 2) 정보처리기사 관련 서류 제출 정규 표현식 연습 당근마켓 토이 프로젝트 다시 시작 일일목표 2023.05.25 (목요일) 문제 풀이 전략 문자열 복습 짝찌어 제거하기 (Level 2) 문자열 압축 (Level 2) 3진법 뒤집기 (Level 1) 당근마켓 토이 프로젝트 진행 Hateos 들어내기 Test 코드 간소화 비회원 ..

    2023.05.15 (월요일) ~ 2023.05.20 (토요일) 주간 및 일일 학습계획

    주간목표 2023.05.15 ~ 2023.05.20 컨디션 관리 주 3회 이상 운동 월, 수, 목 미라클 모닝 인증 문제 풀이 전략 정렬 풀이 정보처리기사 필기 시험 일일목표 2023.05.15 (월요일) 문제 풀이 전략 정렬 풀이 두 개 뽑아서 더하기 (Level 1) H-Index (Level 2) 문자열 내 마음대로 정렬하기 (Level 1) 정보처리기사 필기 기출 풀이 및 오답노트 작성 기출문제 5회 (21년 2회) 기출문제 6회 (21년 3회) 일일목표 2023.05.16 (화요일) 문제 풀이 전략 정렬 풀이 및 배열 복습 시작 가장 큰 수 (Level 2) 교점에 별 만들기 (Level 2) 정보처리기사 필기 기출 풀이 및 오답노트 작성 기출문제 7회 (22년 1회) 일일목표 2023.05.1..

    2023.05.02 (화요일) ~ 2023.05.05 (금요일) 주간 및 일일 학습계획

    주간목표 2023.05.02 ~ 2023.05.05 컨디션 관리 주 3회 이상 운동 월, 수, 목 미라클 모닝 인증 금요일 첫 알고리즘 스터디 참여 문제 풀이 전략 문자열, 재귀 문제 풀이 일일목표 2023.05.02 (화요일) 문제 풀이 전략 (문자열, 정규 표현식) 4문제 풀이 3진법 뒤집기 (Level 1) 이진 변환 반복하기 (Level 2) 신규 아이디 추천 (Level 1) 핸드폰 번호 가리기 (Level 1) 정보처리기사 3과목 데이터베이스까지 완료 일일목표 2023.05.03 (수요일) 문제 풀이 전략 (재귀) 문제 풀이 시작 콜라츠 추측 (Level 1) 하노이의 탑 (Level 3) 모음 사전 (Level 2) 정보처리기사 4과목 스크립트 프로그래밍까지 완료 (시간 남으면 4과목 전체 ..