Time does not change us. It just unfolds us.

Coding Test 61

[C++]카카오 Lv2 파일명 정렬(소문자 전환,stable_sort)

52분 sort 썼을 때는 1,2번만 맞게 되므로 stable_sort를 써야한다. 참고한 질문 내용 예를 들어 테케가 ["img01", "img1"] 이라면 img01과 img1은 동일한 순위를 가질겁니다.그렇다면 결과는 마지막 조건에 의해 기존의 순서를 유지한 ["img01", "img1"]이 나와야 합니다.이때 불안정정렬은 이 순서를 보장하지 않습니다. 정렬 과정에서 ["img1", "img01"]이란 결과가 나올 수 있다는 것입니다. 따라서 안정정렬을 구현하고 있는 stable_sort()를 사용하면 통과하실수 있을겁니다. 위 문제를 해결했는데도 head랑 number로만 비교하니 tail이 뭔지 고려하지 않고 출력하여 에러가 난다. 찾은 반례 ["muzi1.png1", "MUZI1.png2", ..

Coding Test 2022.01.13

[C++]카카오 Lv2 프렌즈4블록

40분 쉬운편인데 빈 블록은 'E'라 표시해서 개수 카운트에 착오가 생겨 헤맸다. 라이언(R), 무지(M), 어피치(A), 프로도(F), 네오(N), 튜브(T), 제이지(J), 콘(C) 만 있는것처럼 설명했으면서 예제에 E는 누군데요... 오른쪽 아래부터 빈공간을 체크해서 vector에 담고 마지막 값으로 이동하는 방식으로 구현했다. 문제 설명 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다. 만약 판이 위와 같이 주어질 경우, 라이언이 2×2로 배치된 7개 블록과 콘이 2×2로 배치된 4개 블록이 지워진다. 같은 ..

Coding Test 2022.01.13

[C++]카카오 Lv2 단체사진 찍기 (순열)

52분 의 next_permutation이용하고 조건만 걸어주면 금방 풀 수 있는 문제인데 수학적으로 수식을 계산하여 접근하려고만 생각하다가 늦어졌다. https://mjmjmj98.tistory.com/38 [C++ / Algorithm] 순열(next_permutation) 사용 방법과 조합(Combination) 구하기 순열을 구하는 next_permutation 함수 순열 수학적으로 순열(permutation)이란 서로 다른 n개의 원소에서 r개를 뽑아 한 줄로 세우는 경우의 수를 말합니다. 원소를 한 줄로 세우기 때문에 원소의 조합이 mjmjmj98.tistory.com #include #include #include using namespace std; int main() { vector v{..

Coding Test 2022.01.12

[C++]카카오 Lv2 후보키 (set, 재귀함수 부분집합, vector size순정렬)

안써본 여러 개념을 이해하고 풀어서 시간은 오래걸렸지만 배운점이 많다. set을 이용한 중복제거 vector size(크기)순 정렬 재귀함수를 이용한 부분집합 vector subsets; vector subset; int makeSubset(int k,int n) { if (k == n+1) subsets.push_back(subset); else { subset.push_back(k); makeSubset(k+1,n); subset.pop_back(); makeSubset(k+1,n); } return 0; } makeSubset(0,size-1); //4개면 0~3 for(vector s : subsets) { for(int a : s) cout

Coding Test 2022.01.11

[카카오]Lv2 카카오프렌즈 컬러링북(BFS)

42분 BFS를 2년만에 처음 풀어보는거라 가물가물한 상태로 꾸역꾸역 끄집어냈다. 하도 많이 풀었어서 그런지 다행이 기억이 났다. 그래도 너무 오래 풀었다... 처음에 배경을 제외해야 한다는 것을 인지 못해서 왜 아래 그림이 12영역인지 이해를 못했다. 빨리 읽어야된다는 압박감을 버려잇! 문제 설명 카카오 프렌즈 컬러링북 출판사의 편집자인 어피치는 네오에게 컬러링북에 들어갈 원화를 그려달라고 부탁하여 여러 장의 그림을 받았다. 여러 장의 그림을 난이도 순으로 컬러링북에 넣고 싶었던 어피치는 영역이 많으면 색칠하기가 까다로워 어려워진다는 사실을 발견하고 그림의 난이도를 영역의 수로 정의하였다. (영역이란 상하좌우로 연결된 같은 색상의 공간을 의미한다.) 그림에 몇 개의 영역이 있는지와 가장 큰 영역의 넓이..

Coding Test 2022.01.07

[카카오]Lv2 수식 최대화 (Iterator)

이번엔 쉽다고 생각해서 빠르게 풀었는데, 또 실패했다. 70점이라 같은 케이스를 찾아봤는데 질문방에서도 도움되지 않는다. 머G 나중에 친절한 분이 질문방에 댓글 달아주셨다. 덕분에 바로 통과함.. 복받으실 분 ㅠㅠㅠ stoi가 아니라 stoll longlong 으로 사용해야했다! 문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여..

Coding Test 2022.01.07

[카카오]Lv2 튜플 (Map 정렬)

40분 굉장히 쉬웠는데 문제를 이해못해서 좀 헤매고, 두번째로는 map을 value 중심으로 정렬하면서 시간이 오래걸렸다. 어찌됐는 집합에서 원소가 표현된 개수를 내림 차순으로 정렬해주면 되는 문제였다. 문제 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유..

Coding Test 2022.01.06

[카카오]Lv2 문자열 압축(실패)

아 하기 싫어..... 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을..

Coding Test 2022.01.05

[카카오]Lv2 메뉴 리뉴얼 (비트연산, 부분집합, map조회)

이번 문제는 진짜 오래 풀었다. 부분집합을 만들어서 풀어야겠다고 생각해서 비트를 이용하였는데, 아래의 방법으로 부분집합을 만드는 순간 시간초과가 되어버렸다. 다른 사람의 소스를 보면서 재귀합수 방법으로 이해하고 다시 풀어보니 생각보다 간단했다. map을 모두 조회하는 방법, range based for문을 사용하는 방법을 이해했다. 무엇보다 문제를 제대로 읽자^___^... void printSubsets(char arr[], int n) { for (int i = 0; i < (1

Coding Test 2022.01.02

[카카오]Lv2 뉴스 클러스터링

문제는 쉬운데 너무 비효율적으로 단순히 짰다... 다른 사람거 보니 낫닝겐... 모두 소문자로 만들기 transform(str1.begin(), str1.end(), str1.begin(), ::tolower); transform(str2.begin(), str2.end(), str2.begin(), ::tolower); 문자열 비교하기 (교집합) for (int i = 0; i < str1.size() - 1; i++) if (isalpha(str1[i]) && isalpha(str1[i+1])) hash1[str1.substr(i, 2)]++; 문제 설명 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum..

Coding Test 2021.12.31

[카카오]Lv2괄호 변환

40' 좀 넘게 걸렸다 재귀를 쓰는 문제였지만 어렵진 않았다. 괄호가 잘 맞는지는 ( 괄호 개수와 ) 괄호 개수를 비교해보면 된다. 문제 설명 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 용어의 정의 '(' 와 ')' 로만 이루어진 문자열이 있을 경..

Coding Test 2021.12.30

[카카오]오픈채팅방(split함수)

43'03" C++에서 string split함수 구현을 처음 해보았다. Java를 사용하다 보니 당연히 라이브러리에 정의되어 있을줄 알았다 ㅎ; pair로 DB를 생성하여 회원 정보를 저장했는데, vector로 정의하니 반복문이 많아 32개 케이스 중 6개가 시간초과 났다. 처음으로 map을 이용하여 풀어 시간초과 없이 훨씬 깔끔하게 작성할 수 있었다. https://hwan-shell.tistory.com/149 C++] map 사용법과 원리 map이란? 배열을과 비슷하게 생겼습니다. 배열은 index값을 통해 값을 찾죠. ex) a[3] = { 10. 20. 30 }; a[0] = 10, a[1] = 20, a[2] = 30. 이런식으로 a라는 배열에서 원하는 값을 얻기 위해 0 ~ 2까지의 번호를..

Coding Test 2021.12.28

[카카오]실패율(벡터정렬)

분모가 0일 때를 생각 못해서 5개정도 실패하다가 아래 케이스를 고려해서 해결했다. N=5 stages = [2, 1, 2, 4, 2, 4, 3, 3] answer = [4, 3, 2, 1, 5] pair를 사용한 벡터를 first는 내림차순, second는 오름차순으로 정렬하는 함수를 이용했다. 문제 설명 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기..

Coding Test 2021.12.27

[카카오]다트 게임

1D2S#10S 위 같이 한자리 수가 아닌 숫자를 인식해야 하는 케이스를 고려하지 못해서 통과를 못했다. 아주아주 간단한 문젠데 노가다스럽게 했다.... 문제 설명 다트 게임 카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~ 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single(S), Double(D), Tr..

Coding Test 2021.12.27

[카카오]비밀지도

vector 문법이 기억안나서 오래걸렸다. int를 char로 변경하는 법도 오랜만에 본다ㅋ.ㅋ.ㅋ 2진법에서 10진법으로 변환을 처음해봤다. 카카오는 재밌는 문제가 많은듯,,, 다른 사람 풀이를 보니 비트연산자를 이용해서 간단하게 구현했다. 항상 다른 사람의 풀이를 보면 현타가 온다 ㅎ; 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 ..

Coding Test 2021.12.26

[카카오]신규 아이디 추천

문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이..

Coding Test 2021.12.26

[카카오]키패드 누르기

문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4..

Coding Test 2021.12.24

[BFS]04-백준 2178 미로탐색

https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net #include #include using namespace std; int N, M;//N :행 개수, M : 열 개수 int arr[101][101];//칸 정보 bool visit[101][101] = { 0, };//방문 여부 int cnt = 1;//최소의 칸 수 int xc[4] = { -1,1,0,0 }; int yc[4] = { 0,0,-1,1 }; bool MNcheck = false;//도착 시 종료를 위한 b..

Coding Test 2019.10.02

[BFS]03-백준 1012 유기농 배추

**5백준1012번 유기농배추** https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. ( www.acmicpc.net 정답 코딩 #include #include using namespace std; int M,N;//..

Coding Test 2019.09.28

[BFS]02-백준 1697 숨바꼭질

**5백준1697번 숨바꼭질 ** https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 www.acmicpc.net 576번 대표적인 정답 코딩 #include #include using namespace std; int..

Coding Test 2019.09.24