지문 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 ..
프로그래머스에서는 카카오 코딩 테스트 기출 문제들을 분류하여 따로 풀어볼 수 있도록 했다. 그중 Level 1인 문제가 있었는데, 다른 문제1들보다는 조금 귀찮아서 어려운 문제긴 했다. 경로는 최하단에 삽입하도록 하겠다. 문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), ..
트리와 그래프 그래프를 설명하기 이전에, 트리가 빠질 수 없습니다. 그래프는 겉보기에 트리와 상당히 유사하지만, 더 다양한 표현 방법으로 인해 기능이 많아지고, 그럼으로써 어려워졌다고 볼 수 있습니다. 이번 포스트에서는 트리 자체에 대한 내용을 따로 다루지 않을 것이고, 필요하시다면 이전글을 참조해주세요. 차이 Tree 무조건적으로 부모-형제 관계와 같이 상-하 구조로 연결되어 있다. 위에서 아래로 방향성을 갖고 있다. 계층 모델을 사용 Graph 부모-형제 개념이 없다. 방향성에 대한 제약이 없다(양방향, 단방향). 연결 상태를 필수적으로 갖지 않아도 된다. 네트워크형 모델을 사용한다. 추가 용어 방향 그래프 : 간선의 방향이 존재하는 그래프. 무방향 그래프에서는 양방향으로 이동이 가능. 연결 그래프 ..
선행 내용 Map을 이해하시기 위해서는 Set에 대한 이해가 먼저 필요합니다. Set/Map을 구현하기 위한 Hash/Tree에 대한 설명, Set 활용에 대해 정리한 이전 글을 참조해주시면 감사하겠습니다. Set, Map 비교 Set은 값이 곧 저장 위치를 나타내는 자료구조입니다. Set은 기능이 부실한 점이 보였습니다. 예를 들어, 중복 저장이 되지 않는 점, 값을 순서대로 출력할 수 없다는 점 등 부족한 기능이 있었고, 이를 보충하기 위한 방안으로 Set에 좋은 기능은 가져가되, 인덱스를 따로 둠으로써 해당 문제점들을 해결하기 위한 방안인 Map이 있습니다. Set과 Map의 가장 큰 차이는 Set : 값이 곧 인덱스 (값을 해시 코드로 변환해 해당 위치에 저장) Map : 값과 인덱스 구분 (인덱..
개념 Set은 Map과 더불어 프로그래머로써 필수적으로 알아야 할 자료구조 중 하나입니다. Set/Map을 구현한 종류로는 Tree와 Hash가 있는데, 두 가지의 개념 및 Java Collection을 통한 활용을 할 예정입니다. 어떤 것으로 구현했느냐에 따라, 값 추가와 탐색 방법이 상이하며, 그에 따라 구현 방법별 값 추가와 탐색의 시간 복잡도가 다르게 됩니다. 일반적으로 Hash가 Tree보다 더 빠르므로, 자주 사용됩니다. Hash HashSet을 설명드리기 전에, Hash에 대한 이해가 필요하다고 생각됩니다. Set을 배우는 단계에서 Tree는 이미 알고 오셨을 가능성이 높으나, Hash는 아직 생소한 단어일 것이라 생각 되어, 따로 설명드립니다(Tree는 개념 자체는 설명하지 않을 예정입니다..
소개 Tree는 비선형 자료구조 중 하나입니다. 비선형이라는 것은 말 그대로 일직선으로 나타내지 못하는 방식이며, 그중 트리는 계층적 구조를 띄고 있습니다. 계층적 구조라 함은, 일반적으로 조직도를 나타내는 경우 자주 사용되죠. 트리도 그와 비슷합니다. 자료구조를 학습할 때, 사람들이 가장 많이 포기하시는 경우가 선형 자료구조를 어렵게 어렵게 배우고, 비선형 자료구조로 넘어갈 때라는 것 아시나요? (윤성우의 열혈 자료구조 내용) 일반적으로 저희는 나란히 자료가 저장되고, 삭제되는 메커니즘에 익숙합니다. 그런데 갑자기 익숙하지 않게 계층적으로 자료를 저장하고 삭제하려니 난이도가 급증했음을 느끼게 되고, 곧 포기하게 되는 거죠. 부족하지만, 이 게시글이 조금이라도 도움이 되시길 바랍니다... 구조 아까 말씀..