본문 바로가기

TIL11

프로그래머스 - 오픈채팅방 프로그래머스 - 오픈채팅방 문제 접근 방법 딕셔너리를 활용하여 uid별로 닉네임을 기록한뒤 출입로그를 최종 닉네임으로 나타낸다. 내가 생각한 work flow 닉네임의 변경은 'Enter' 또는 'Change'일 때만 일어나므로 해당 remark가 존재하면 닉네임을 다시 기록한다. Change는 최종출력인 출입로그에 기록되지 않는다. 모든 닉네임 변경과정이 종료된 시점에서 출입로그의 닉네임을 uid에 맞게 작성한다. 완성한 솔루션 JavaScript function solution(record) { // uid를 기준으로 닉네임을 수집한다. // (변경되었다면 최종만) let nicknameList = {}; let greet = { 'Enter': '들.. 2021. 5. 12.
프로그래머스 - 소수찾기 프로그래머스 - 소수찾기 문제 접근 방법 주어진 문자열(숫자로만 구성된)로 생성가능한 모든 종류의 조합(순서를 고려한)을 구한다. 그 조합중 가장 큰 수를 찾는다. 가장 큰 수까지의 소수리스트를 생성한다. 모든 조합을 순회하며 소수인지 확인한다. prime_num_list생성 n까지의 prime_num_list를 생성한다. 단 생성 규칙을 다음과 같이 정한다. 각 index의 위치는 해당하는 정수를 의미한다. 해당 숫자가 소수인지는 Boolean값으로 나타낸다. ex) 숫자 5는 소수인가 -> prime_num_list[5] -> true 모든 조합 생성 주어진 문자열에 대해 1개씩 선택하는 모든 조합부터 문자열의 길이만큼 선택하는 조합까지를 전부 담고있는 리스트를 생성한다.(선택하는 순서를 고려한다.).. 2021. 4. 29.
프로그래머스 - 스킬트리 프로그래머스 - 스킬트리 문제 접근 방법 정규 표현식을 사용해서 주어진 스킬트리와 관련없는 스킬들은 전부 지운다. 남아있는 문자열이 주어진 스킬트리 문자열에서 어느위치에 있는지 확인하다. 주어진 스킬트리가 'ACD'라고 가정하고 이것과 상관없는 모든것을 지운다. 남은 문자열의 상태 및 위치를 파악한다. 이때, 유도되는 결과는 다음과 같다. 빈문자열이 남았다면, 모두 주어진 스킬트리와 관련이 없던 것으로 어떠한 문자열이 왔더라도 정상적인 스킬트리이다. 빈문자열이 아니고, 주어진 스킬트리 문자열에서의 위치가 0번째 라면, 정상적인 스킬트리이다. ex) 'ACD'에서 스킬트리에 의해 배우는 단계는 'A', 'AC', 'ACD'밖에 존재하지.. 2021. 4. 29.
프로그래머스 - 메뉴 리뉴얼 프로그래머스 - 메뉴 리뉴얼 2021/04/23 문제 접근 방법 course의 요소(숫자)마다 모든 문자열을 반복하며 요소(숫자)개를 선택하는 조합을 생성한다. 가장 많이 나온 조합을 기록하고 (동률일 경우 모두) 2번 이상 나오지 않은 조합은 제외시킨다. helper함수 문자열에서 num개 선택하는 조합을 Array로 돌려주도록 한다. 조합선택은 디자인하기 수월하도록 recursion을 도입. 완성한 solution function solution(orders, course) { let answer = []; // amount = 선택할 개수 for (let amount of course) { let temp = {}; for (let i = 0; i < orders.length; i++) { for .. 2021. 4. 23.
프로그래머스 - 괄호변환 프로그래머스 - 괄호변환 2021/04/15 문제 접근 방법 helper함수 &#39;더이상 쪼갤 수 없는 균형잡힌 문자열&#39;과 &#39;남은 문자열&#39;로 나누는 함수를 만든다. &#39;(&#39; 와 &#39;)&#39; 의 수가 같다면 균형잡힌 문자열이다. 올바른 괄호 문자열 올바른 괄호 문자열인지 검증해야 한다. 이어진 괄호를 반복적으로 제거하여 남은 괄호가 있는지 확인하다. 완성된 solution function solution(p) { if (p === &#39;&#39;) return &#39;&#39;; let [u, v] = helper(p); // u = 균형잡힌 문자열, v = 남은 문자열 if (isPerfect(u)) return u + solution(v); else .. 2021. 4. 15.
프로그래머스 - 삼각 달팽이 프로그래머스 - 삼각 달팽이 2021/04/14 문제 접근 방법 list의 길이가 1부터 하나씩 증가하는 형태로 n개의 list를 생성한다. 1부터 가장 큰 수까지 방향에 맞게 list에 넣는다. 가장 큰 수 가장 큰 수는 n이 1, 2, 3, 4, 5, 6 일 때 1, 3, 6, 10, 15, 21 과 같이 [초항이 1이며 [초항이 2이고 공차가 1인 &#39;등차수열&#39;]을 계차로 갖는 &#39;계차수열&#39;]의 n번째 항임을 알 수 있다. Layer class를 만든다. Array를 상속받아 Layer라는 클래스를 만든다. 삼각 달팽이의 각 층을 구성하게 할 것이다. 아래와 같은 기능이 필요하다. 가장 앞에서부터 비어있는(empty)곳에 삽입 가장 뒤에서부터 비어있는(empty)곳에 삽입 .. 2021. 4. 14.
First Project를 마무리하며... 시간은 아주 빠르게 지나갔고 정신차리니 2주는 금방이었다. 우리는 Mohaji(모하지)라는 서비스를 만들었다. 주변에 다양한 즐길거리를 확인 할 수 있는 서비스 특정 태그를 제외하고, 포함하고 찾아보는등 기존 지도서비스와는 다르게 선택된 태그들 전부를 현재 보고 있는 화면내에 존재한다면 보여준다. 맨날 노래방만 가는건 지겨운데, 심심하고 할건없고... 이 서비스를 만들면서 명동에 실탄사격장이 있다는 사실도 처음 알았다. 간단한 기능들을 소개하자면 보편적인 기능은 회원가입 없이도 이용할 수 있지만, 댓글쓰기 와 같은 몇몇 기능은 로그인 후 에만 이용할 수 있다. 회원가입은 일반회원가입, 소셜로그인을 통한 회원가입이 존재하며 소셜로그인을 통한 회원가입시에는 아이디와 비밀번호를 따로 타이핑 하지 않아도 되는 .. 2020. 10. 6.
2주 프로젝트 9일차 Fact(사실) - 초기 생각했던 기능들은 대부분 취소되거나 수정됨. - 무엇을 어떻게 취사선택 하냐에 따라 작업속도가 달라짐. Feeling(느낌) - 프로젝트 기간은 시간이 정말 빠르게 지나가는 것 같이 느껴진다. - 아직 '나'를 위하여 '누군가'를 위하여 '팀'을 위하여 행동하는 것중 어떤 것에 비중을 더 둬야 할지 모르겠다. Finding(교훈) - 그럴수록 시간을 조금 더 효율적으로 사용할 필요가 있어보인다. - 한사람 한사람 관계를 생각하면서도 팀 전체를 생각해야한다... 어 렵다. Future action(행동) - 걸리는 시간, 예상되는 시간 등을 자세히 생각해 보아야 겠다. - 시간을 단축하기 위하여 어떤 문제에 직면했는지 자주 확인해야 할 것 같다. 이번에 여러가지 생각을 하게되었다... 2020. 9. 30.
2주 프로젝트 3일차 내 의견이 맞다고 주장하는 것 보다 중요한것은 다른사람의 의견을 열린마음으로 듣는 것 이다. 프로젝트 기간엔 시간이 5배로 빠르게 간다. 아무것도 한게 없어보이는데 벌써 3일차. 우리 팀은 빠르게 SR을 끝내고 코드를 작성하는 작업에 착수하는 대신 처음하는 Project이니 만큼 SR시간을 조금더 소중하게 조금 느리게 시작하더라도 후에 있을 변경점에 대비하기도 하며 각 스프린트를 쪼개어 목표를 설정하고 작업에 대한 이슈카드들을 생성하여 의존성이 있는 작업들의 관계를 파악하는데 시간을 두었다. 또, 포지션(프론트, 백)에 관계없이 모두가 Wireframe, DB Schema 구성 등 포지션 별로 나누어 진행하면 훨씬 빨랐겠지만 한가지씩 같이 구성 함으로서 우리가 구현할 것의 WorkFlow를 상세히 익히며.. 2020. 9. 23.