|
| 1 | +# [level 3] 표현 가능한 이진트리 - 150367 |
| 2 | + |
| 3 | +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/150367) |
| 4 | + |
| 5 | +### 성능 요약 |
| 6 | + |
| 7 | +메모리: 17.8 MB, 시간: 232.14 ms |
| 8 | + |
| 9 | +### 구분 |
| 10 | + |
| 11 | +코딩테스트 연습 > 2023 KAKAO BLIND RECRUITMENT |
| 12 | + |
| 13 | +### 채점결과 |
| 14 | + |
| 15 | +정확성: 100.0<br/>합계: 100.0 / 100.0 |
| 16 | + |
| 17 | +### 제출 일자 |
| 18 | + |
| 19 | +2025년 10월 21일 16:31:33 |
| 20 | + |
| 21 | +### 문제 설명 |
| 22 | + |
| 23 | +<p>당신은 이진트리를 수로 표현하는 것을 좋아합니다.</p> |
| 24 | + |
| 25 | +<p>이진트리를 수로 표현하는 방법은 다음과 같습니다.</p> |
| 26 | + |
| 27 | +<ol> |
| 28 | +<li>이진수를 저장할 빈 문자열을 생성합니다.</li> |
| 29 | +<li>주어진 이진트리에 더미 노드를 추가하여 포화 이진트리로 만듭니다. <strong>루트 노드는 그대로 유지합니다.</strong></li> |
| 30 | +<li>만들어진 포화 이진트리의 노드들을 가장 왼쪽 노드부터 가장 오른쪽 노드까지, 왼쪽에 있는 순서대로 살펴봅니다. <strong>노드의 높이는 살펴보는 순서에 영향을 끼치지 않습니다.</strong></li> |
| 31 | +<li>살펴본 노드가 더미 노드라면, 문자열 뒤에 0을 추가합니다. 살펴본 노드가 더미 노드가 아니라면, 문자열 뒤에 1을 추가합니다.</li> |
| 32 | +<li>문자열에 저장된 이진수를 십진수로 변환합니다.</li> |
| 33 | +</ol> |
| 34 | + |
| 35 | +<p><strong>이진트리에서 리프 노드가 아닌 노드는 자신의 왼쪽 자식이 루트인 서브트리의 노드들보다 오른쪽에 있으며, 자신의 오른쪽 자식이 루트인 서브트리의 노드들보다 왼쪽에 있다고 가정합니다.</strong></p> |
| 36 | + |
| 37 | +<p>다음은 이진트리를 수로 표현하는 예시입니다.</p> |
| 38 | + |
| 39 | +<p>주어진 이진트리는 다음과 같습니다.<br> |
| 40 | +<img src="https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/c3331b5f-2151-4ebd-a20e-8df122709d3e/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%20%E1%84%8B%E1%85%A5%E1%86%B9%E1%84%82%E1%85%B3%E1%86%AB%20%E1%84%83%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7.drawio%20%284%29.png" title="" alt="제목 없는 다이어그램.drawio \(4\).png"></p> |
| 41 | + |
| 42 | +<p>주어진 이진트리에 더미노드를 추가하여 포화 이진트리로 만들면 다음과 같습니다. <strong>더미 노드는 점선으로 표시하였고, 노드 안의 수는 살펴보는 순서를 의미합니다.</strong><br> |
| 43 | +<img src="https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/0eb238be-9bfe-479a-bed8-84e1abe63097/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%20%E1%84%8B%E1%85%A5%E1%86%B9%E1%84%82%E1%85%B3%E1%86%AB%20%E1%84%83%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7.drawio%20%285%29.png" title="" alt="제목 없는 다이어그램.drawio \(5\).png"></p> |
| 44 | + |
| 45 | +<p>노드들을 왼쪽에 있는 순서대로 살펴보며 0과 1을 생성한 문자열에 추가하면 <code>"0111010"</code>이 됩니다. 이 이진수를 십진수로 변환하면 58입니다. </p> |
| 46 | + |
| 47 | +<p>당신은 수가 주어졌을때, 하나의 이진트리로 해당 수를 표현할 수 있는지 알고 싶습니다.</p> |
| 48 | + |
| 49 | +<p>이진트리로 만들고 싶은 수를 담은 1차원 정수 배열 <code>numbers</code>가 주어집니다. <code>numbers</code>에 주어진 순서대로 하나의 이진트리로 해당 수를 표현할 수 있다면 1을, 표현할 수 없다면 0을 1차원 정수 배열에 담아 return 하도록 solution 함수를 완성해주세요.</p> |
| 50 | + |
| 51 | +<hr> |
| 52 | + |
| 53 | +<h5>제한사항</h5> |
| 54 | + |
| 55 | +<ul> |
| 56 | +<li>1 ≤ <code>numbers</code>의 길이 ≤ 10,000 |
| 57 | + |
| 58 | +<ul> |
| 59 | +<li>1 ≤ <code>numbers</code>의 원소 ≤ 10<sup>15</sup></li> |
| 60 | +</ul></li> |
| 61 | +</ul> |
| 62 | + |
| 63 | +<hr> |
| 64 | + |
| 65 | +<h5>입출력 예</h5> |
| 66 | +<table class="table"> |
| 67 | + <thead><tr> |
| 68 | +<th><code>numbers</code></th> |
| 69 | +<th><code>result</code></th> |
| 70 | +</tr> |
| 71 | +</thead> |
| 72 | + <tbody><tr> |
| 73 | +<td>[7, 42, 5]</td> |
| 74 | +<td>[1, 1, 0]</td> |
| 75 | +</tr> |
| 76 | +<tr> |
| 77 | +<td>[63, 111, 95]</td> |
| 78 | +<td>[1, 1, 0]</td> |
| 79 | +</tr> |
| 80 | +</tbody> |
| 81 | + </table> |
| 82 | +<hr> |
| 83 | + |
| 84 | +<h5>입출력 예 설명</h5> |
| 85 | + |
| 86 | +<p><strong>입출력 예 #1</strong></p> |
| 87 | + |
| 88 | +<p>7은 다음과 같은 이진트리로 표현할 수 있습니다.<br> |
| 89 | +<img src="https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/f7e1fdb9-3344-420d-9238-e033a24e83ba/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%20%E1%84%8B%E1%85%A5%E1%86%B9%E1%84%82%E1%85%B3%E1%86%AB%20%E1%84%83%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7.drawio%20%287%29.png" title="" alt="제목 없는 다이어그램.drawio \(7\).png"></p> |
| 90 | + |
| 91 | +<p>42는 다음과 같은 이진트리로 표현할 수 있습니다.<br> |
| 92 | +<img src="https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/f7e1fdb9-3344-420d-9238-e033a24e83ba/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%20%E1%84%8B%E1%85%A5%E1%86%B9%E1%84%82%E1%85%B3%E1%86%AB%20%E1%84%83%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7.drawio%20%287%29.png" title="" alt="제목 없는 다이어그램.drawio \(7\).png"></p> |
| 93 | + |
| 94 | +<p>5는 이진트리로 표현할 수 없습니다.</p> |
| 95 | + |
| 96 | +<p>따라서, [1, 0]을 return 하면 됩니다.</p> |
| 97 | + |
| 98 | +<p><strong>입출력 예 #2</strong></p> |
| 99 | + |
| 100 | +<p>63은 다음과 같은 이진트리로 표현할 수 있습니다.<br> |
| 101 | +<img src="https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/ae334397-6cf6-4cb7-a76e-f760c080def3/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%20%E1%84%8B%E1%85%A5%E1%86%B9%E1%84%82%E1%85%B3%E1%86%AB%20%E1%84%83%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7.drawio%20%288%29.png" title="" alt="제목 없는 다이어그램.drawio \(8\).png"></p> |
| 102 | + |
| 103 | +<p>111은 다음과 같은 이진트리로 표현할 수 있습니다.<br> |
| 104 | +<img src="https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/b6873b5d-421c-433e-a739-97f9ab1b62b8/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%20%E1%84%8B%E1%85%A5%E1%86%B9%E1%84%82%E1%85%B3%E1%86%AB%20%E1%84%83%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7.drawio%20%2810%29.png" title="" alt="제목 없는 다이어그램.drawio \(10\).png"></p> |
| 105 | + |
| 106 | +<p>95는 이진트리로 표현할 수 없습니다.</p> |
| 107 | + |
| 108 | +<p>따라서, [1, 1, 0]을 return 하면 됩니다.</p> |
| 109 | + |
| 110 | + |
| 111 | +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges |
0 commit comments