Algorithm
개발자라면 준비해야 할 알고리즘 지식과 연습 내용을 다룹니다.
-
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 "크레인 인형뽑기 게임"의 로직을 구현하는 문제다. 게임은 1x1 크기의 칸으로 이루어진 NxN 크기의 정사각 격자로 이루어진 화면에서 이루어지며, 위쪽에 인형을 잡기 위한 크레인과 크레인으로 잡은 인형을 담을 별도의 바구니가 있다. 모든 인형은 1x1 크기의 격자 한 칸을 차지하며, 격자 아래 칸부터 차곡차곡 쌓여있는 모습을 띤다. 사용자는 크레인을 좌우로 움직여서 가장 위에 있는 인형을 하나 집어 올릴 수 있으며, 이 집어 올린 인형은 바구니의 가장 아래 칸부터..
[Programmers/Lv. 1] 크레인 인형뽑기 게임 (2019 KAKAO 개발자 겨울 인턴십, Python)📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 "크레인 인형뽑기 게임"의 로직을 구현하는 문제다. 게임은 1x1 크기의 칸으로 이루어진 NxN 크기의 정사각 격자로 이루어진 화면에서 이루어지며, 위쪽에 인형을 잡기 위한 크레인과 크레인으로 잡은 인형을 담을 별도의 바구니가 있다. 모든 인형은 1x1 크기의 격자 한 칸을 차지하며, 격자 아래 칸부터 차곡차곡 쌓여있는 모습을 띤다. 사용자는 크레인을 좌우로 움직여서 가장 위에 있는 인형을 하나 집어 올릴 수 있으며, 이 집어 올린 인형은 바구니의 가장 아래 칸부터..
2023.11.06 -
📊 그래프가 뭔데? 그래프를 사전적으로 정의하면, "정점(노드)과 간선(엣지)으로 이루어진 자료구조"이다. 이 말을 이해하기 위해서는 정점(노드)은 뭔지, 간선(엣지)은 뭔지를 알아야 할 것이다. 설명해 보겠다. 노드(Node)는 예전 연결 리스트를 다루는 글에서 설명한 적이 있듯이, 하나의 데이터 단위를 나타내는 객체라고 이해하면 된다. 아래와 같이 SNS 구조를 나타내는 그래프가 있다고 했을 때, 영훈, 현승, 동욱과 같이 한 유저가 그래프 구조 안에서 하나의 노드라고 설명할 수 있겠다. 간선(엣지, Edge)는 그래프 내에서 두 노드 간의 연결 관계를 나타내는 데이터를 의미한다. 쉽게 설명해서 연결선. 그래서 두 노드 사이에 엣지가 있으면, 이때는 "두 노드는 인접해 있다."라고 표현하게 된다. 엣..
[Programmers, Lv.3] 코딩테스트 고득점 Kit - 그래프 (1), 기본 개념, BFS/DFS + 가장 먼 노드 (Python)📊 그래프가 뭔데? 그래프를 사전적으로 정의하면, "정점(노드)과 간선(엣지)으로 이루어진 자료구조"이다. 이 말을 이해하기 위해서는 정점(노드)은 뭔지, 간선(엣지)은 뭔지를 알아야 할 것이다. 설명해 보겠다. 노드(Node)는 예전 연결 리스트를 다루는 글에서 설명한 적이 있듯이, 하나의 데이터 단위를 나타내는 객체라고 이해하면 된다. 아래와 같이 SNS 구조를 나타내는 그래프가 있다고 했을 때, 영훈, 현승, 동욱과 같이 한 유저가 그래프 구조 안에서 하나의 노드라고 설명할 수 있겠다. 간선(엣지, Edge)는 그래프 내에서 두 노드 간의 연결 관계를 나타내는 데이터를 의미한다. 쉽게 설명해서 연결선. 그래서 두 노드 사이에 엣지가 있으면, 이때는 "두 노드는 인접해 있다."라고 표현하게 된다. 엣..
2023.09.24 -
1. 올바른 괄호 (문제 설명, 제한사항, 입출력 예) 기호 "("와 ")"로만 이루어진 문자열이 주어졌을 때, 문자열이 올바른 괄호로 짝지어져 있으면 True를, 올바르지 않은 괄호로 짝지어져 있으면 False를 반환하라는 문제이다. 여기서 괄호가 올바르게 짝지어졌다는 것은 "(" 문자로 열렸으면, 반드시 ")" 문자로 닫히는 짝이 이루어져 있어야 한다는 것을 의미한다. (내가 생각한 풀이 과정) 문자열 s를 반복하면서 괄호를 체크한다. "("를 만나게 되면 카운트를 1 증가, ")"를 만나게 되면 카운드를 1 감소시켜 최종적으로는 카운트가 0이 되면 True를 반환한다. (-> 열린 괄호와 닫힌 괄호의 수가 같다는 것을 의미) 단, 여기서 추가적으로 열린 괄호가 없을 때 닫힌 괄호가 먼저 오는 경우를..
[Programmers, Lv.2] 코딩테스트 고득점 Kit - 스택/큐 (2) (Python)1. 올바른 괄호 (문제 설명, 제한사항, 입출력 예) 기호 "("와 ")"로만 이루어진 문자열이 주어졌을 때, 문자열이 올바른 괄호로 짝지어져 있으면 True를, 올바르지 않은 괄호로 짝지어져 있으면 False를 반환하라는 문제이다. 여기서 괄호가 올바르게 짝지어졌다는 것은 "(" 문자로 열렸으면, 반드시 ")" 문자로 닫히는 짝이 이루어져 있어야 한다는 것을 의미한다. (내가 생각한 풀이 과정) 문자열 s를 반복하면서 괄호를 체크한다. "("를 만나게 되면 카운트를 1 증가, ")"를 만나게 되면 카운드를 1 감소시켜 최종적으로는 카운트가 0이 되면 True를 반환한다. (-> 열린 괄호와 닫힌 괄호의 수가 같다는 것을 의미) 단, 여기서 추가적으로 열린 괄호가 없을 때 닫힌 괄호가 먼저 오는 경우를..
2023.09.22 -
😳 스택 (Stack), 큐 (Queue), Deque 개념 살펴보기 스택 (Stack) : LIFO(후입선출), "나중에 들어온게먼저 나가는" 자료 구조이다. -> 파이썬에서는 리스트로 사용 가능! 큐 (Queue) : FIFO(선입선출), "먼저 들어온게 먼저 나가는" 자료 구조이다. -> 파이썬에서는 deque를 사용한다. Deque : double-ended Queue의 줄임말로, "양방향"에서 데이터를 처리할 수 있게 해주는 자료구조다. (스택과 큐의 기능이 모두 들어있다고 생각하면 됨!) 스택부터 파이썬 코드로 실전에서는 어떻게 활용할 수 있는지 살펴보자. 스택(Stack)은 위에서도 말했지만, 그냥 파이썬의 기본 자료형인 리스트(List)를 사용하면 된다. # 스택 (Stack) # 파이썬..
[Programmers, Lv.1] 코딩테스트 고득점 Kit - 스택/큐 (1), Stack, Queue, Deque 개념 + 같은 숫자는 싫어😳 스택 (Stack), 큐 (Queue), Deque 개념 살펴보기 스택 (Stack) : LIFO(후입선출), "나중에 들어온게먼저 나가는" 자료 구조이다. -> 파이썬에서는 리스트로 사용 가능! 큐 (Queue) : FIFO(선입선출), "먼저 들어온게 먼저 나가는" 자료 구조이다. -> 파이썬에서는 deque를 사용한다. Deque : double-ended Queue의 줄임말로, "양방향"에서 데이터를 처리할 수 있게 해주는 자료구조다. (스택과 큐의 기능이 모두 들어있다고 생각하면 됨!) 스택부터 파이썬 코드로 실전에서는 어떻게 활용할 수 있는지 살펴보자. 스택(Stack)은 위에서도 말했지만, 그냥 파이썬의 기본 자료형인 리스트(List)를 사용하면 된다. # 스택 (Stack) # 파이썬..
2023.09.21 -
😳 힙(Heap) 기초 개념 간단하게 살펴보기 힙(Heap)이란? : "완전 이진트리"라는 형태적 속성과, "모든 노드의 데이터는 자식 노드들의 데이터보다 크거나 같다"는 힙 속성을 모두 만족시키는 자료구조이다. (즉, 힙을 이해하기 위해서는 트리를 먼저 알아야만 한다!) 그렇다면, 트리(Tree)란? : 데이터의 상-하 관계를 계층적으로 나타내는 자료구조이다. (말 그대로, 트리 모양을 생각하면 되겠다.)-> 맨 위에 있는 노드를 Root 노드, 트리 연결의 가장 마지막 노드를 Leaf 노드라고 부른다.-> 데이터의 상-하 관계를 부모 노드-자식 노드 관계라고 부르며, 같은 깊이에 있는 노드들끼리는 형제 노드라고 부른다. 트리의 종류는 어떤 것들이 있을까? 이진트리 (Binary Tree) : 각 노드..
[Programmers, Lv.2] 코딩테스트 고득점 Kit - 힙(Heap) (1), 더 맵게 (Python)😳 힙(Heap) 기초 개념 간단하게 살펴보기 힙(Heap)이란? : "완전 이진트리"라는 형태적 속성과, "모든 노드의 데이터는 자식 노드들의 데이터보다 크거나 같다"는 힙 속성을 모두 만족시키는 자료구조이다. (즉, 힙을 이해하기 위해서는 트리를 먼저 알아야만 한다!) 그렇다면, 트리(Tree)란? : 데이터의 상-하 관계를 계층적으로 나타내는 자료구조이다. (말 그대로, 트리 모양을 생각하면 되겠다.)-> 맨 위에 있는 노드를 Root 노드, 트리 연결의 가장 마지막 노드를 Leaf 노드라고 부른다.-> 데이터의 상-하 관계를 부모 노드-자식 노드 관계라고 부르며, 같은 깊이에 있는 노드들끼리는 형제 노드라고 부른다. 트리의 종류는 어떤 것들이 있을까? 이진트리 (Binary Tree) : 각 노드..
2023.09.16 -
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 스트리밍 사이트에서 장르별로 가장 많이 재생된 노래 두 개씩 모아 앨범을 출시하려고 한다. 노래와 장르는 고유 번호로 구분하며, 노래를 앨범에 수록할 때는 아래와 같은 기준을 따른다고 한다. 속한 노래가 많이 재생된 장르를 먼저 수록한다. (모든 장르는 재생된 횟수가 다르다.) 장르 내에서 많이 재생된 노래를 먼저 수록한다. (2곡을 수록할 거니, 한 장르에서 가장 많이 재생된 노래 2개를 수록한다는 뜻) 장르 내에서 재생 횟수가 같은 노래가 있다면, 고유 번호가 ..
[Programmers, Lv.3] 코딩테스트 고득점 Kit - 해시 (3) (Python)📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 스트리밍 사이트에서 장르별로 가장 많이 재생된 노래 두 개씩 모아 앨범을 출시하려고 한다. 노래와 장르는 고유 번호로 구분하며, 노래를 앨범에 수록할 때는 아래와 같은 기준을 따른다고 한다. 속한 노래가 많이 재생된 장르를 먼저 수록한다. (모든 장르는 재생된 횟수가 다르다.) 장르 내에서 많이 재생된 노래를 먼저 수록한다. (2곡을 수록할 거니, 한 장르에서 가장 많이 재생된 노래 2개를 수록한다는 뜻) 장르 내에서 재생 횟수가 같은 노래가 있다면, 고유 번호가 ..
2023.09.13 -
1. 전화번호 목록 (Level 2) (문제 설명, 제한사항, 입출력 예) 전화번호부에 적힌 전화번호를 담은 배열 phone_book이 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를, 그렇지 않으면 true를 반환하라는 문제이다. 각 전화번호의 길이는 1 이상 20 이하이며, 같은 전화번호가 중복해서 들어있지는 않다고 한다. (내가 생각한 풀이 과정) phone_book 리스트에 담겨있는 전화번호를 하나씩 반복한다. 반복되는 요소와 바로 다음 요소를 비교할 건데, 접두어를 비교해야 하므로 해당 반복 요소 인덱스 i의 길이만큼 슬라이싱 후 비교한다. 만약, 두 글자가 같다면 접두어가 같다고 판단할 수 있다. -> False 반환 반복을 끝까지 해도 조건에 걸리지 않는다면, 같은 ..
[Programmers, Lv.2] 코딩테스트 고득점 Kit - 해시 (2) (Python)1. 전화번호 목록 (Level 2) (문제 설명, 제한사항, 입출력 예) 전화번호부에 적힌 전화번호를 담은 배열 phone_book이 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를, 그렇지 않으면 true를 반환하라는 문제이다. 각 전화번호의 길이는 1 이상 20 이하이며, 같은 전화번호가 중복해서 들어있지는 않다고 한다. (내가 생각한 풀이 과정) phone_book 리스트에 담겨있는 전화번호를 하나씩 반복한다. 반복되는 요소와 바로 다음 요소를 비교할 건데, 접두어를 비교해야 하므로 해당 반복 요소 인덱스 i의 길이만큼 슬라이싱 후 비교한다. 만약, 두 글자가 같다면 접두어가 같다고 판단할 수 있다. -> False 반환 반복을 끝까지 해도 조건에 걸리지 않는다면, 같은 ..
2023.09.12 -
1. 폰켓몬 (Level 1) (문제 설명, 제한사항, 입출력 예) 폰켓몬의 종류 번호가 담긴 1차원 배열 nums가 주어진다. 연구실에 있는 총 N 마리의 폰켓몬 중에서 박사님이 N/2마리를 가져가도 좋다고 말했을 때, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아 그때의 폰켓몬 종류 번호의 개수를 구하라는 문제이다. (가장 많은 종류의 폰켓몬을 선택하는 방법이 여러 가지인 경우에도, 선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 구하면 된다. (내가 생각한 풀이 과정) 중복되지 않는 경우의 수를 골라야 가장 많은 폰켓몬 종류를 가져갈 수 있는 것이니, 일단 중복을 제거해 주기 위해 집합 set을 사용했다. 기존 nums 리스트에 중복값이 없다고 가정했을 때는, nums/2 만큼이 최대 종류로 가..
[Programmers, Lv.1] 코딩테스트 고득점 Kit - 해시 (1) (Python)1. 폰켓몬 (Level 1) (문제 설명, 제한사항, 입출력 예) 폰켓몬의 종류 번호가 담긴 1차원 배열 nums가 주어진다. 연구실에 있는 총 N 마리의 폰켓몬 중에서 박사님이 N/2마리를 가져가도 좋다고 말했을 때, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아 그때의 폰켓몬 종류 번호의 개수를 구하라는 문제이다. (가장 많은 종류의 폰켓몬을 선택하는 방법이 여러 가지인 경우에도, 선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 구하면 된다. (내가 생각한 풀이 과정) 중복되지 않는 경우의 수를 골라야 가장 많은 폰켓몬 종류를 가져갈 수 있는 것이니, 일단 중복을 제거해 주기 위해 집합 set을 사용했다. 기존 nums 리스트에 중복값이 없다고 가정했을 때는, nums/2 만큼이 최대 종류로 가..
2023.09.12 -
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 실패율을 구하는 코드를 완성하라는 문제이다. 실패율은 다음과 같이 정의한다. "스테이지에 도착했으나, 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수" 전체 스테이지의 개수 N과, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열이 같이 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 구하라는 문제이다. 🤔 내가 생각한 풀이 과정 (1) - 런타임 에러 코드 문제에 나와있는 예시..
[Programmers/Lv. 1] 실패율 (2019 KAKAO BLIND RECRUITMENT, Python)📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 실패율을 구하는 코드를 완성하라는 문제이다. 실패율은 다음과 같이 정의한다. "스테이지에 도착했으나, 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수" 전체 스테이지의 개수 N과, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열이 같이 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 구하라는 문제이다. 🤔 내가 생각한 풀이 과정 (1) - 런타임 에러 코드 문제에 나와있는 예시..
2023.08.24 -
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 정수 n이 매개변수로 주어질 때, 그림과 같은 밑변의 길이와 높이가 n인 삼각형에 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한다. 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 구하라는 문제이다. 🤔 내가 생각한 풀이 과정 나는 아래와 같은 순서를 가지고 문제를 해결하려 했다. 값을 넣을 2차원 배열을 만든다. -> 배열에 들어가는 최댓값을 구한다.(n=4일 때 10, n=5일 때 15) -> 1부터 구한 최댓값까지 반복하면서 올바른 행, ..
[Programmers/Lv. 2] 삼각 달팽이 (월간 코드 챌린지 시즌1, Python)📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 정수 n이 매개변수로 주어질 때, 그림과 같은 밑변의 길이와 높이가 n인 삼각형에 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한다. 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 구하라는 문제이다. 🤔 내가 생각한 풀이 과정 나는 아래와 같은 순서를 가지고 문제를 해결하려 했다. 값을 넣을 2차원 배열을 만든다. -> 배열에 들어가는 최댓값을 구한다.(n=4일 때 10, n=5일 때 15) -> 1부터 구한 최댓값까지 반복하면서 올바른 행, ..
2023.08.15 -
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 달리기 경주가 열렸다. 해설진들은 선수가 앞의 선수를 추월하면, 추월한 선수의 이름을 부른다고 한다. 현재 등수대로 선수들의 이름이 담긴 문자열 배열 players와 해설진이 추월할 때 부르는 선수들의 이름이 담긴 문자열 배열 callings가 주어진다고 할 때, 경주가 끝났을 때의 등수를 배열에 담아 구하라는 문제다. 🤔 내가 생각한 풀이 과정 (1) - 시간 초과 코드 파이썬의 swap 기능을 묻는 문제인 것 같았다. 어렴풋이, temp라는 변수를 이용해야 하는..
[Programmers/Lv. 1] 달리기 경주 (프로그래머스 연습문제, Python)📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 달리기 경주가 열렸다. 해설진들은 선수가 앞의 선수를 추월하면, 추월한 선수의 이름을 부른다고 한다. 현재 등수대로 선수들의 이름이 담긴 문자열 배열 players와 해설진이 추월할 때 부르는 선수들의 이름이 담긴 문자열 배열 callings가 주어진다고 할 때, 경주가 끝났을 때의 등수를 배열에 담아 구하라는 문제다. 🤔 내가 생각한 풀이 과정 (1) - 시간 초과 코드 파이썬의 swap 기능을 묻는 문제인 것 같았다. 어렴풋이, temp라는 변수를 이용해야 하는..
2023.08.09 -
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 주어진 문자열 s를 아래 규칙에 따라서 분해하고, 분해된 문자열의 개수를 구하라는 문제이다. 문자열 s의 첫 글자를 x라고 한다. (문자열 s는 소문자로만 이루어진다.) 문자열을 읽어나가면서 x가 나온 횟수와 x가 아닌 글자가 나온 횟수를 카운트한다. 처음으로 두 횟수가 같아지는 순간 (0 제외) 이 카운트를 멈추고, 지금까지 읽은 문자열을 분리한다. 분리된 문자열을 빼고, 남은 부분에 대해서 "첫 글자를 읽고 -> 문자별 나온 횟수 카운트" 과정을 반복한다. 두 ..
[Programmers/Lv. 1] 문자열 나누기 (프로그래머스 연습문제, Python)📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 주어진 문자열 s를 아래 규칙에 따라서 분해하고, 분해된 문자열의 개수를 구하라는 문제이다. 문자열 s의 첫 글자를 x라고 한다. (문자열 s는 소문자로만 이루어진다.) 문자열을 읽어나가면서 x가 나온 횟수와 x가 아닌 글자가 나온 횟수를 카운트한다. 처음으로 두 횟수가 같아지는 순간 (0 제외) 이 카운트를 멈추고, 지금까지 읽은 문자열을 분리한다. 분리된 문자열을 빼고, 남은 부분에 대해서 "첫 글자를 읽고 -> 문자별 나온 횟수 카운트" 과정을 반복한다. 두 ..
2023.08.08