2018 카카오 블라인드 공채 1차 코테 문제

5시간을 잡고 실전처럼 진행하였으며 코드의 최적화나 알고리즘은 정확하지 않음.


코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr


2번 문제로 약 5분 정도 소요되었다.

bit연산을 이용하여 풀었으며 어려울건 없었다.

bit연산을 사용하지 않으면 푸는데 오래 걸릴 문제.

#include <string>
#include <vector>

using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;

    for (int i = 0; i < n; i++)
    {
        string in = "";
        int temp = arr1[i] | arr2[i];

        for (int j = 0; j < n; j++)
        {
            if (temp & (1 << j))
                in = '#' + in;
            else
                in = ' ' + in;
        }
        answer.push_back(in);
    }
    
    return answer;
}

2018 카카오 블라인드 공채 1차 코테 문제

5시간을 잡고 실전처럼 진행하였으며 코드의 최적화나 알고리즘은 정확하지 않음.


코딩테스트 연습 - [1차] 다트 게임 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr


1번문제로 약 10분 정도 걸렸다.

문자열 처리 문제였으며 딱히 필요한 알고리즘은 없었다.

점수가 10일때 처리를 따로 해주어야 했다.

string 형태에선 10은 2칸이기 때문에 1일때 뒤에 0인지 아닌지 판단하여 점수를 계산하고 인덱스처리를 해주어야했다.

옵션에 * 가 직전의 수도 변경하므로 직전의 수도 저장 해두어야 풀 수 있다.

그 외에는 그냥 조건에 따라 풀면 된다.

#include <string>

using namespace std;

int solution(string s)
{
	int answer = 0;
	int temp = 0, prev = 0;

	for (int i = 0; i < s.size(); i++)
	{

		if (s[i] == '1')
		{
			if (s[i + 1] == '0')
			{
				i++;
				temp = 10;
			}
			else
				temp = 1;
		}
		else
			temp = s[i] - '0';

		if (s[i + 1] == 'D')
			temp *= temp;
		else if (s[i + 1] == 'T')
			temp *= temp * temp;
		i++;

		if (s[i + 1] == '*')
		{
			answer += prev;
			temp *= 2;
			i++;
		}
		else if (s[i + 1] == '#')
		{
			temp *= -1;
			i++;
		}

		answer += temp;
		prev = temp;
	}

	return answer;
}

+ Recent posts