Q) 이직 사유가 어덯게 되나요?
Q) 우리가 리액트 네이티브로 개발을 하고있는데, 네이티브로 전환할 겁니다. 이에 대해 어려운 점이 있나요?
Q) 회사를 고를때 기대하는 부분, 또는 이렇게 하지 말았으면 하는것은 무엇인가요?
Q) 2020년에 졸업 하셨는데, 지금까지 어떤 일을 하셨나요?
Q) 연봉이 얼마였나요?
Q) 좌표평면위에 직사각형이 있는데, 점 세개를 알고 있을 때 나머지 한 점의 좌표를 구하는 방법? A) 이 문제는 프로그래머스에서 항상 시작할 때 나오는 문제인데.. 저는 if문으로 분기해서 한 점과 같은 x값이 있는지 보고, 같은 좌표가 없는 나머지 하나의 x좌표를 x로 결정. y도 같은 방식으로 수행합니다.
Q) 아, 그러면 다른문제로 넘어갈게요. 제가 생각한 정답은 조금 다른 방식인데, 각 좌표에 대해서 카운트를 해요. 그러면 1만큼만 카운트 된 좌표값이 있겠죠, 그 값을 취하는 거에요.
Q) 두 번째 문제입니다. 집합에서 [1,2,3], [6,7], [13] 이 있습니다. 각 집합은 연속된 수들을 가집니다. 여기에 [4,5]를 추가하면 어떻게 되나요? [1,2,3,4,5], [6,7], [13] 세 개의 집합이죠. 그러면 [3,4,5]면 어떻게 되나요? A) [1,2,3] [3,4,5] [6,7] [13] ??
Q) 그건 아니고, [1,2,3,4,5], [6,7], [13] 이 됩니다. 그러면 [1,2,3,4,5,6,7,8,9,10,11,12,13] 을 넣으면 어떻게 되나요? A) [1,2,3,4,5,6,7,8,9,10,11,12,13] 으로 한 개의 집합이 됩니다.
Q) 네, 그렇죠. 그러면 일반화 시켜서 어떻게 로직을 짤 수 있나요? A) 음.. 저는 visited 배열을 생성하는 방법을 생각해보았습니다. 길이가 N이라는 걸 알 수 있다면 N크기의 boolean 배열을 생성합니다. 그리고 각 원소가 있다면 true로 바꿉니다. 새로운 요소가 들어오면 true이면 그대로 두고, false라면 true로 바꿉니다. 그리고 마지막에 true인 부분만 카운트하면 됩니다.
Q) 어떤 문제점이 있을까요? 우선, N을 알 수 없을 거에요. 그리고 이게 9897937242341125527274 이렇게 엄청나게 큰 수라면? int는 65536인가요? 네, 16비트에서는 그렇죠. 아무튼 이러한 경우에 빈공간에 대한 낭비도 상당히 크겠죠. Q) 기대하는 답변은 이겁니다. 우선 [1,2,3,6,7,13] 그냥 배열로 만들어요. 그리고 새로운 요소인 [4,5]가 들어오면 그냥 크기를 비교하면서 해당 위치에 삽입하는 거에요. 그러면 [1,2,3,4,5,6,7,13]이 되겠죠. 마지막에는 [1,2,3,4,5,6,7]까지는 연속적이므로 카운트가 되고, [13]은 연속적이지 않으므로 추가로 카운트되어서 2가 나오겠죠. 아무튼 그런 방식도 훌륭하다고 생각합니다.
Q) 마지막 문제는 rand7이라는 함수가 있고, 이는 1 ~ 7 중에 동일한 확률로 랜덤하게 수를 선택하는 함수에요. 그렇다면 rand5는 rand7을 사용해서 어떻게 표현할 수 있나요? A) 5와 7의 최소공배수인 35만큼 rand7을 더한다음 나머지 연산으로 값을 가져옵니다. rand5 = (rand7 * 5) % 5 입니다.
Q) 그렇게 하면 문제가 생기지 않을까요? 나오는 비율이 과연 균등할까요? A) 아, rand7을 기반으로 5번 더하면 1, 2의 등장 비율이 훨씬 높을것입니다.
Q) 그러면 어떻게 다른 방법으로 해결할 수 있나요? A) 잘 모르겠습니다.