문제를 잘못 읽어서 가로, 세로의 값을 받아오는 과정에서 IndexError를 계속 범했다.(문제 좀 잘 읽자..)💡소요시간 : 40m
N = 3일때의 그림과 N = 9일때의 그림을 유심히 본 결과 규칙을 이해할 수 있었다.입력3출력입력9출력N = 3인 경우를 확장하게 된다면 N = 9의 경우가 된다.💡소요시간 : 40m
냅색 알고리즘으로 유명한 문제다. 처음엔 가방의 무게를 기준으로 오름차순 정렬해서 접근했으나 WA를 받았다. 이런 식으로 접근하는 문제는 아닌 것 같았다. 2차원 배열을 이용해서 DP를 구현하는 문제였다. 표를 사용해서 나타내보면 다음과 같다.입력4 76 134 83
DFS 탐색 알고리즘을 이용해 해결할 수 있는 문제였다. 모든 노드의 방문 여부를 체크하면서 각각의 사람의 친구관계를 DFS를 이용해 탐색하면서 깊이를 1만큼 증가하여 깊이가 4에 도달한다면 A ~ E까지 모두 친구관계가 성립하므로 1을 출력하고 아니라면 0을 출력하는
정답률이 20%인 이유가 있었다. 일반적인 방법으로 돌리면 시간초과(TLE)가 발생한다.이 문제는 각각의 경우를 나눠서 생각해야한다.①. 만약 9 or 99 or 999 ... 이런 형태의 경우라면?②. 만약 입력받은 값이 1 ~ 8의 경우라면?③. 만약 입력받은 값의
combinations을 이용해서 조합가능한 모든 경우의 수를 구하는 방법으로 코드를 작성했다.N번째 감소하는 수가 존재하지 않는다면 -1을 출력해야하므로 이 부분은 try ... except문을 이용해서 예외처리해줬다.💡소요시간 : 17m
처음엔 오름차순으로 정렬해서 문제를 해결하려고 시도했으나 계속 WA를 받아서 결국 포기하고 질문게시판에 있는 방법인 내림차순으로 정렬해서 해결하는 방법을 시도했다.💡소요시간 : 30m
BFS 탐색 알고리즘을 통해 해결할 수 있었다. 적록색약이 아닌 사람의 경우를 먼저 구해준 다음 초록(G)과 빨강(R) 중에서 G → R 혹은 R → G로 바꾼 다음 적록색약인 사람의 경우를 구해 값을 출력했다.💡소요시간 : 10m
암호의 모음은 최소 1개, 자음은 최소 2개여야 하며 정렬된 상태여야 한다.combinations을 이용해서 푸는게 가장 간단할 것 같아서 combinations을 이용했다. 백트래킹 연습을 위해서 백트래킹으로 푸는 방법도 조만간 수정해서 올려야겠다.💡소요시간 : 1
모든 좌표의 경우의 수를 하나하나 조건문으로 작성하여 접근했지만 결국 WA를 받고 포기했다. 이 문제를 찾아보니 연관 키워드로 CCW알고리즘이 나와있었다.💡소요시간 : 20m
\[백준 1038번 감소하는 수]와 동일한 형태의 문제였다. 정말 쉽게 풀었다.💡소요시간 : 4m
이전 포스팅에 있었던 \[백준 7576번 토마토] 문제의 변형문제다. 기존의 문제는 2차원 배열에서의 상하좌우 형태를 탐색하는 전형적인 BFS 탐색 알고리즘의 문제였다면 이번 문제는 3차원 배열에서의 상하좌우와 위아래도 탐색을 해야하는 BFS 탐색 알고리즘의 문제였다.
백트래킹과 조합론 두 방법을 이용해서 풀 수 있을 것 같다는 생각은 했지만 아직 백트래킹은 익숙하지 않아서 그런지 제대로 접근을 못하겠어서 결국 조합론을 이용해 해결했다. 폐업시키지않고 남겨둬야하는 치킨집들을 고르는 경우의 수를 combinations을 이용해서 구한
백트래킹을 좀 더 공부해보고자 선택해서 풀어본 문제였다.N자리 수부터 시작을 해야하므로 초기값을 식을 이용해 정의하면 val = 10 \* N + i의 형태가 된다.💡소요시간 : 8m
이전 포스팅에 있었던 \[백준 7569번 토마토] 문제와 동일한 유형의 3차원 배열을 이용한 BFS 탐색 알고리즘 문제였다. 이전 문제를 해결한 경험이 있어서 쉽게 해결할 수 있을거라고 생각했는데 정말 오래 걸렸다. 그래도 다른 사람의 코드를 보지 않고 짠 코드라 기분
문자열 S를 문자열 T로 변환할 수 있는지에 대한 문제였다. S → T로 변환하려면 많은 가지치기를 통해서 모든 경우를 일일이 확인해야한다. 그래서 반대로 생각해서 T → S로 변환하는 경우를 생각했다.문자열을 바꿀 때 두 가지 연산을 다음과 같이 바꿀 수 있다.①.
배열 A를 배열 B로 만들기 위한 방법을 찾는 것보다 배열 B를 배열 A로 만들기 위한 방법을 찾는 것이 더 수월하다.문제에서 주어진 연산을 바꿔 표현하면 다음과 같다.①. 배열에 있는 값 하나를 1 감소시킨다. ②. 배열에 있는 모든 값을 2로 나눈다.💡소요시간 :
과제의 마감일자를 기준으로 내림차순 정렬한 다음 과제의 시작일을 찾는 방식으로 코드를 작성했다. 💡소요시간 : 10m
보물은 서로 간에 최단 거리로 이동하는데 있어 가장 긴 시간이 걸리는 양 끝 육지에 하나씩 나뉘어 묻혀있다. 이중 반복문을 통해서 육지를 찾고 각각의 육지에서부터 육지의 끝까지 이동하는데 걸리는 시간을 BFS 함수를 이용해 찾아 최댓값을 출력하면 된다.💡소요시간 :
산봉우리의 정의를 다시 한 번 되짚어보자.산봉우리는 같은 높이를 가지는 하나의 격자 혹은 인접한 격자들의 집합으로 이루어져 있다. (여기서 "인접하다"의 정의는 X좌표 차이와 Y좌표 차이 모두 1 이하일 경우로 정의된다.) 또한 산봉우리와 인접한 격자는 모두 산봉우리의
번호가 낮은 종류의 바이러스부터 어떻게 증식시켜야할지 고민했다.queue에서 popleft를 하게 된다면 가장 맨 앞에 있는 원소부터 빼내는 방법을 취하게 되는데 이 때 가장 작은 번호가 앞에 있다면 낮은 종류의 바이러스부터 증식이 가능하게 된다.💡소요시간 : 37m
원점에서부터 시작하여 (N, M)에 도달하는데 걸리는 최단 시간을 구하는 문제다.칼을 이용해서 벽을 부수면서 갈 수 있는 최단 시간과 칼을 찾지 않고 열린 길을 통해서 갈 수 있는 최단 시간을 구하고 두 최단 시간의 최솟값을 출력하면 된다.💡문제접근
전에 N과 M 시리즈를 통해서 공부했던 백트래킹 알고리즘을 이용해서 해결했다.중복된 문자열을 출력하지 않는 과정에서 시간이 많이 걸렸던 문제였다. 백트래킹 문제가 나온다고해서 겁부터 먹는 습관을 조금씩 버리도록 노력하자.💡소요시간 : 41m
전에 풀었던 \[백준 1744번 수 묶기]와 동일한 유형의 문제였다. 양수 리스트와 음수 리스트를 따로 만들어서 접근하면 해결할 수 있다.💡소요시간 : 24m
R의 횟수가 짝수라면 배열을 두 번 뒤집는 것이기 때문에 기존 상태 그대로 유지가 된다. 하지만 R의 횟수가 홀수라면 배열을 한 번 뒤집어줘야한다. 이 부분에 초점을 맞춰서 코드를 작성했다.자료구조 deque(덱)을 사용했고 조건에 따라서 pop()과 popleft()
B의 최댓값이 10^14까지 매우 큰 수로 나올 수 있기 때문에 배열로 선언한다면 메모리초과가 발생할 것이다. 따라서 제곱근을 이용해서 절반까지를 배열로 선언해줘야한다.💡소요시간 : 17m
계속되는 메모리초과로 인해서 어떻게 하면 줄일 수 있는지 고민을 많이 했다. 5 ≤ A < B ≤ 100,000,000의 범위가 주어졌는데 이 때 10,000,000이상 100,000,000이하의 범위에서는 소수도 존재하지 않고 팰린드롬도 존재하지 않게 된다는 것을 알
처음엔 일반적인 최소 강의실 배정의 수를 묻는 줄 알고 정렬한 다음 필요한 강의실의 개수를 세는 방법으로 접근했다가 잘못 이해한 것을 뒤늦게 깨닫고 다시 접근했다.질문게시판에 있는 설명을 참고해서 코드를 작성했다.입력31 32 43 5출력2문제에 대한 나의 이해가 정확
분리 집합 알고리즘에 대한 부분은 한 번도 공부한 적이 없어서 Youtube를 통해서 영상을 시청한 다음 분리 집합에 대한 개념이 정립된 다음 코드를 작성했다. 자세한 부분은 알고리즘 시리즈에 기록할 예정이다.💡소요시간 : 1h
브루트포스 알고리즘으로 모든 경우를 확인해서 조건에 맞는 답을 출력하는 방법을 이용해야한다. 채널번호를 문자로 처리한 다음 for문을 돌려 만약 고장난 버튼이 포함되어 있다면 break를 실행시키고 아니라면 입력한 채널번호의 길이에 이동하려고 하는 채널의 버튼에서 입력
각각의 예시를 통해서 나올 수 있는 경우의 수를 구한 다음 표를 통해서 규칙성을 확인한 다음 점화식을 세워 해결할 수 있었다.2차원 배열을 통한 다이나믹 프로그래밍 해결 방법도 익숙해지도록 많이 활용해봐야겠다.0 ~ N까지의 숫자 중에서 K개를 택해서 합이 N이 되도록
처음에는 음수와 양수 리스트를 별도로 만들어 연결 리스트를 이용해서 0에 가까운 값을 갖는 조합을 구하는 방식으로 접근했고 이 과정에서 2중 반복문을 사용했는데 2중 반복문때문에 시간초과(TLE)가 발생한 것 같다.💡소요시간 : 20m
이전 포스팅에 있었던 \[백준 2467번 용액]과의 차이라면 정렬의 유무이다.오름차순 정렬만 해준다면 쉽게 해결할 수 있다.💡소요시간 : 10m
아직도 못 품... 1시간 고민했는데 도저히 안 좁혀져서 나중에 할려고 집어 던짐ㅋ
K(1 ≤ K ≤ 10^19)로 매우 큰 값이 나올 수 있어 중복조합을 이용한 처음의 내 접근방식은 한계가 있었다.구글링을 통해 알아보니 비트마스킹과 관련된 방법으로 문제를 해결하는 코드가 대부분이었다.💡소요시간 : 50m
두 수 A, B를 나눈 몫의 곱의 결과와 최대공약수를 곱해주면 최소공배수가 나온다.최대공약수와 최소공배수의 곱의 제곱근을 기준으로 for문을 돌려 두 자연수의 합이 최소가 되는 순간의 두 수를 출력하고 멈춘다.💡소요시간 : 34m
여태까지 풀었던 그래프 이론 문제는 가중치가 없었는데 이 문제는 각 노드 사이의 가중치가 주어지는 형태의 다른 문제였다.가중치가 주어지는 형태의 문제는 각 노드 사이의 관계를 표현할 때 튜플 형태로 묶어서 가중치도 같이 넣어주면 해결할 수 있다.💡소요시간 : 31m
\[백준 12904번 A와 B]문제와 비슷하지만 두 문제는 서로 다른 문제였다.거꾸로 거슬러 올라가는 방법을 이용해서 T를 S로 만들 수 있는지 여부를 따져 코드를 작성했다.💡소요시간 : 47m
센서의 좌표들을 오름차순으로 정렬한 다음 센서 사이의 간격을 구해 내림차순으로 정렬했다.그 다음 앞에서부터 거리가 많이 차이나는 곳을 빼면서 남은 센서 사이의 간격의 구간합을 구했다.💡소요시간 : 27m
\[백준 2212번 센서]와 동일한 유형의 문제였다.조에서 키가 가장 큰 원생과 키가 가장 작은 원생의 키 차이만큼 비용이 발생한다. 인접한 원생끼리의 키의 차이를 저장하는 리스트를 별도로 생성해 내림차순으로 정렬한 다음 최소가 되게 하려면 비용이 큰 부분은 포함되지않
1열과 마지막열에는 물이 고일 수 없다.블록의 높이가 각각 다르기 때문에 구간별 블록의 높이의 최댓값을 구해준 다음 물이 고일 수 있는 부분의 값을 구해준다.
LCS(Longest Common Subsequence, 최장 공통 부분 수열) 문제였다. 이 문제는 2차원 배열을 이용한 다이나믹 프로그래밍의 문제였다.이 문제를 풀면서 어떤 방식으로 접근을 해야하는지는 이해를 했지만 한 가지 의문점이 들었다. 만약에 최장 공통 부분
테스트케이스를 예제로 점화식을 세워보았다.1원을 이용해서 1 ~ 10원을 만드는 방법의 수는 모두 1가지가 나온다.1, 2원을 이용해서 1 ~ 10원을 만드는 방법의 수를 단계적으로 살펴보자.1) 1원을 만들 수 있는 경우의 수 : 02) 2원을 만들 수 있는 경우의
이전에 포스팅했던 \[백준 2293번 동전 1]의 문제와는 다른 문제였다. 이 문제는 k원의 가치를 만드는데 필요한 동전의 개수가 최소가 되게끔 하는 문제였다.💡소요시간 : 24m
되게 간단한 문제라고 생각했는데 규칙을 파악하고 이를 코드로 옮기는 과정에서 많은 시간이 걸렸다. 장치의 가동 횟수가 최소가 되게끔 하도록 이동한다면 아래와 같은 규칙이 나오게 되고 거리의 제곱근을 기준으로 계산하면 문제를 해결할 수 있다.1 + 2 + ... + (n
처음엔 문제를 잘 이해하지 못해서 시간이 좀 오래 걸렸다.통신연구소의 레이저 송신기에서 보내는 레이저의 방향은 오른쪽에서 왼쪽이다.테스트케이스를 예제로 설명하면 다음과 같다.첫 번째 탑의 높이인 6은 수신받을 탑이 존재하지 않으므로 0이 된다.두 번째 탑의 높이인 9에
정수 N을 정수 D로 나눴을 때 몫을 Q, 나머지를 R이라고 하고 나머지 정리에 의해 식을 세워보면 N = Q × D + R을 만족하게 된다. 모든 정수를 한 정수 D로 나눴을 때 나머지가 같아지는 가장 큰 D를 구하는 문제인데 결국 구하고자 하는 D는 최대공약수와 관
버블 정렬 알고리즘을 선택해서 무지성으로 코드를 작성했는데 퍼센트도 보지 못하고 칼같이 WA를 확인했다. 질문게시판에 있는 내용을 참고해서 문제를 다시 이해했고 이 문제의 핵심은 가장 뒤에서부터 큰 숫자를 앞으로 땅겨 오는 것이 핵심이다.오랜만에 코딩테스트 공부를 다시
백트래킹을 이용하는 문제였다. 어떻게 풀어야할지는 알겠는데 오래 고민했던 문제였다.ASCII 코드 순서에 따라서 맞게 출력해야하는데 그 부분을 간과해 게속 WA를 받았다.💡소요시간 : 50m
간단한 문제였는데 조금 시간이 오래 걸렸던 백트래킹 문제였다. 선수의 포지션별 스탯의 총합이 최대가 되도록 넣고 빼는 작업을 반복하는 백트래킹 함수를 작성해서 문제를 해결했다.💡소요시간 : 47m
3중 반복문을 사용한다는 점에서 조금 비효율적인 코드지만 백트래킹 방법으로 접근하는 방법이 수월하지 않아 파이썬 순열과 조합 라이브러리인 Combinations를 사용했다.💡소요시간 : 47m
대표적인 동적 프로그래밍 문제손코딩하며 예제를 파악한 다음 코드로 옮겼다.1원, 2원, 3원으로 6원을 만드는 예제를 dp 테이블을 이용해서 설명dp테이블은 무엇을 의미하는가? → dpi : i원을 만드는데 나올 수 있는 모든 경우의 수최종적으로 dp 테이블을 1차원
대표적인 동적 프로그래밍 문제얼마의 cost 비용을 들여 cnt_num만큼의 고객을 창출한다는 표현을 명심💡소요시간 : 25m
예제입력1의 테스트 케이스를 분석해보면 다음과 같이 이해할 수 있다.결국 존은 제 시간에 일을 끝낼 수 있게 결정할 수 있는 한도에서 존이 가장 늦게 일어날 수 있는 시간은 2분이다.💡소요시간 : 17m
여러 개의 주사위를 쌓을 때 보이는 5개의 면에 쓰여 있는 수의 합이 최소가 되려면 큐브처럼 가로, 세로, 높이를 늘려가면서 쌓으면 된다.N ≥ 2인 경우부터는 보이는 면의 개수를 1 ~ 3개로 나누어 구하면 해결할 수 있다.①. 보이는 면의 개수 1개 : 0개②. 보
맨 앞부터 액면가가 높은 화폐부터 그대로 접근하게 된다면 문제에서 요구하는 사전 순으로 앞서는 문자열을 출력할 수 없다. 먼저 1원의 가치를 가지는 A를 문자열의 길이 N만큼 만들고 그 다음 맨 뒤에서부터 Z가 들어갈 수 있는 개수를 구해 Z를 채워 넣고 발생하는 차익
맨 앞부터 액면가가 높은 화폐부터 그대로 접근하게 된다면 문제에서 요구하는 사전 순으로 앞서는 문자열을 출력할 수 없다. 먼저 1원의 가치를 가지는 A를 문자열의 길이 N만큼 만들고 그 다음 맨 뒤에서부터 Z가 들어갈 수 있는 개수를 구해 Z를 채워 넣고 발생하는 차익
필요한 화살의 최소 개수를 구하는 문제다. 일단 가장 높은 지점에 있는 풍선부터 하나씩 쏴서 1씩 감소하는 지점이 가장 높은 지점 이후에 존재하면 화살로 풍선을 맞추는 것을 한 회씩 돌리고 결국 모든 풍선이 터지는 시점까지 반복문을 돌려 필요한 화살의 개수를 출력하면
회문인지 아닌지를 판단하는 방법은 간단했지만 유사회문을 어떻게 판단할 것인가가 매우 중요한 문제였다.투 포인터를 이용해서 만약 두 문자가 같으면 left+=1, right-=1 을 수행하여 인덱스에 변화를 주었고 left < right를 만족하는 시점까지 반복문을
문제에서 구하고자하는 부분을 식으로 표현하면 다음과 같다.G = 성원이의 현재 몸무게의 제곱 - 성원이가 기억하는 몸무게의 제곱성원이의 현재 몸무게를 X, 성원이가 기억하는 몸무게를 Y라고 놓았을 때 곱셈공식에 의해 다음과 같은 수식이 나오게 된다.G = X^2 - Y
정답률이 20%라 많이 어려운 문제라고 생각했는데 의외로 쉬웠던 문제였다. 근데 마지막의 문제 조건에 보면 나타낼 수 있는 가짓수가 많으니 1000000으로 나눈 나머지를 출력하라는 조건을 제대로 보지 않아 계속 틀렸다^^;;012출력 ---> 왜냐하면 0은 어떤 방법
BFS를 써야하는 문제라고 생각하고 바로 풀이에 들어갔다.처음엔 방문 여부를 따지는 배열 visited를 리스트로 만들었는데 그렇게 된다면 최대 1e9까지의 길이를 가진 배열을 만들어야하므로 메모리 초과가 발생할 것 같아 중복을 제거하는 set을 사용했다.💡소요시간
구글링을 해보니 파이썬은 정밀한 연산을 위해서 Decimal 라이브러리를 import하여 사용할 수 있다고 한다. 그래서 해당 라이브러리를 이용해서 코드를 작성했다.💡소요시간 : 18m
입력(()\[\[]])(\[])출력28💡소요시간 : 38m
행렬 상에서 모든 경우를 전부 탐색하여 완전 제곱수가 되는 숫자를 찾는 문제다. 이 때, 행 방향의 공차와 열 방향의 공차가 0일 때는 계속 같은 수만 이어붙이는 작업을 하기 때문에 이 상황이라면 Overflow Error가 발생한다. 따라서 공차가 0인 경우는 con
두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만드는데 투 포인터와 절댓값 개념을 이용해서 해결할 수 있었다.
2 ≤ M ≤ 100, 3 ≤ N ≤ 10,000, 1 ≤ 행성의 크기 ≤ 1,000,000의 범위를 보고 일단 이 문제는 2중 반복문으로 푸는 문제가 아니라는 것을 알고 좌표 압축을 이용한 문제 풀이 방법을 선택했다.입력5 320 10 3010 20 6080 25 7
문자열을 다루는 문제였는데 0을 채우는 경우에서 많이 헤맸던 문제였다.💡소요시간 : 37m
개선된 다익스트라 알고리즘 (시간 복잡도 : O(E log V))💡소요시간 : 17m
2차원 배열을 이용해서 문제를 해결할 수 있었다.💡소요시간 : 47m
테스트케이스 예제를 보면 1 ~ 5까지 한 번에 그을 수 있고 6 ~ 7까지 그어서 총 선분의 길이가 5가 나오는 것을 알 수 있다.선분이 겹치는 경우와 선분이 겹치지 않는 경우를 구분해서 선분의 총 길이를 구한다.💡소요시간 : 31m
BFS 완전탐색 유형의 문제주의사항 : 1초 후에 X-1 또는 X+1로 이동, 0초 후에 2×X로 순간이동 💡소요시간 : 27m
앞으로 이동할 수 있는 사다리 객체와 뒤로 이동할 수 있는 뱀 객체를 만들고 주사위의 수 1~6까지 돌려 만약 이동한 값이 사다리 객체에 있다면 앞으로 사다리를 타고 이동하고 이동한 값이 뱀 객체에 있다면 뒤로 뱀을 타고 내려가는 것을 구현하면 된다.💡소요시간 : 3
에라토스테네스의 체로 2 ~ 40000 사이의 소수를 판별한 후 DP 점화식을 세워 문제를 해결할 수 있었다.💡소요시간 : 17m
고차원적인 알고리즘을 사용하지 않는 단순 구현 문제지문의 길이에 당황한 것도 있지만 테스트케이스를 직접 그려가면서 했는데도 이해가 잘 안 가는 부분이 상당히 많았다. 실제로 이런 문제를 만났을 때 자신있게 풀 수 있을지도 모르겠다.회전을 위해서 덱을 사용해야 한다는 점
제일 먼저 생각나는 방법이 2중 loop였는데 이 방법은 TLE 발생어떤 수가 등장했는지 여부를 배열에 처리한다.주어진 플레이어의 카드 배열의 수 x에 대해 x의 배수 y(y > x)를 모두 확인하고 y가 주어진 플레이어의 카드 배열에 등장한 적이 있는지 확인한다.위의
선분 AB와 점 C가 존재한다. 선분 AC와 선분 BC의 길이를 비교했을 때 만약 선분 AC의 길이가 더 길면 점 C에서 선분 AB에 선을 그었을 때 만나는 점이 점 B에 더 가깝게 형성이 되고 선분 BC의 길이가 더 길면 점 C에서 선분 AB에 선을 그었을 때 만나는
어떤 방법으로 최적의 해를 찾아야하는지 처음에 접근하기 어려워 접근법에 대해서 구글링을 해봤더니 정말 간단했다.1) 첫 번째 스위치를 누르는 경우와 누르지 않는 경우로 구분2) 이전 전구의 상태를 기준으로 스위치를 누를 것인지 아닌지 결정💡소요시간 : 42m
정해진 길이의 물웅덩이를 넘어서는 널빤지가 그 다음 물웅덩이의 시작점이거나 시작점을 넘어서는 지점일 수 있으므로 최솟값을 구하려면 그 다음 널빤지의 시작점과 기존 물웅덩이의 도착점을 비교해 시작점을 갱신하고 널빤지의 최소 개수를 구하면 된다.💡소요시간 : 27m
BFS 완전탐색으로 문제를 접근했다. 문제에서 주어진 흐름대로 코드를 작성해갔고 조금의 시간이 걸렸지만 혼자서 해결할 수 있었다.방문여부를 따지면서 탐색을 진행하는 방법도 있지만 청소를 한 구역을 처리해주는 방식을 구현해주면 방문여부를 따지는 배열을 만들 필요없이 탐색
우선순위 큐를 활용한 최소 회의실 개수 문제다. 💡소요시간 : 27m
우선순위 큐를 이용한 최소 회의실 개수(겹치는 것 불가)를 구하는 문제다.💡소요시간 : 17m