level 2 8

[프로그래머스] 프렌즈4블록

2018 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 문제 확인 구현 문제입니다. 풀이 3개의 과정을 정확하게 나누어 구현하여야 합니다. 지울 블록들을 찾습니다. : 조건문 찾은 블록들을 한 번에 지웁니다. : visited 배열 활용 빈 공간들을 블록을 떨어뜨려 채웁니다. : 인덱싱 3번 단계에서 메모리 접근 시간을 빠르게 하기 위해 배열을 전치시켜 떨어뜨릴 때 ary[i][0~j] 한 줄에서 해결할 수 있도록 합니다. 또한 0번 인덱스부터 접..

[프로그래머스][JAVA] 뉴스 클러스터링

2018 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 문제 확인 Map 컨테이너 활용 문제입니다. 풀이 대소문자 구분을 하지 않기 때문에 처음 입력받은 두 문자열을 toLowerCase() 메서드를 통해 모두 소문자로 만들어줍니다. Map 컨테이너를 통해 다중집합 원소들을 처리할 수 있습니다. Map 로 선언하고 해당 원소가 문자열에서 몇 번 등장하였는지 기록합니다. 등장 횟수를 통해 합집합, 교집합 원소의 개수를 알아낼 수 있습니다. 2개의 ma..

[프로그래머스] 후보키

2019 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 문제 확인 데이터베이스의 후보키 특성 유일성, 최소성 특성을 사용하는 문제입니다. set 컨테이너를 통해 유일성, bit 표현식을 통해 최소성을 검사할 수 있습니다. 풀이 bit 표현식을 통해 사용한 칼럼을 표시합니다. 0101 : 0, 2번째 칼럼을 사용, 0011 : 0, 1번째 칼럼 사용 ..

[프로그래머스] 오픈 채팅방

2019 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제 확인 스트링, 쿼리 처리 문제입니다. 풀이 Enter, Leave만 쿼리 (행동 : 아이디)로 저장한 다음 Enter, Change에 대하여 map 컨테이너에 (아이디 : 닉네임) 저장하고 관리합니다. 모든 레코드가 처리되면 쿼리를 읽으면서 처리합니다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32..

[프로그래머스] 괄호 변환

2020 카카오 블라인드 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 문제 확인 문제에서 주어진 대로 구현하면 되는 문제입니다. 풀이 올바른 문자열 인지 판단하는 방법은 문자열을 검색하면서 ( : +1, ) : -1을 해 주면서 값이 항상 양수라면 올바른 문자열, 한 번이라도 음수 값이 된다면 올바르지 못한 문자열이 됩니다. 괄호 문자 (, ) 은 아스키 값으로 72, 73이며 붙어있는 수 이므로 xor 1을 통해 간단하게 서로 바꿀 수 있습니다. 코드 1 2 3 4 5 6 7..

[프로그래머스] 문자열 압축

2020 카카오 블라인드 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 문제 확인 스트링 처리 문제입니다. 풀이 문제 조건에 따라 경우의 수를 나눕니다. 압축한 패턴이 반복되는 횟수가 1인경우 패턴 그대로 입력합니다. 반복 횟수가 2 이상인 경우 : 길이가 1인 경우 "a2", "aa" 같으므로 length + num, 그 이상인 경우 length + num로 해결할 수 있습니다. num은 횟수를 문자열로 나타냈을때 길이이므로 log10을 취해 구할 수 있습니다. 코드 ..

[프로그래머스] 메뉴 리뉴얼

2021 카카오 코딩 테스트 문제입니다. 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제 확인 조합과 자료구조를 사용하는 문제입니다. 풀이 dfs로 메뉴 조합을 찾을 수 있지만 최대 depth가 10이고 손님마다 dfs를 모두 돌면 많은 시간이 걸리기 때문에 조합을 찾는 특별한 알고리즘을 사용합니다. 파이썬에서 사용하는 combination 함수를 구현하여 사용합니다. combination 함수는 permutation 방식을 사용하여 조합을 구하는 방식이며 std::next_permutation 함수를 사..