반갑습니다!

[프로그래머스] n진수 게임 본문

알고리즘 문제 풀이

[프로그래머스] n진수 게임

김덜덜이 2020. 4. 24. 14:50


프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

풀이

문제에서 요구하는 n진수로의 변환을 구현하면 어렵지 않게 해결할 수 있는 문제이다.

코드

C++
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

const char Hex[] = { 'A', 'B', 'C', 'D', 'E', 'F' };

// n진수로 변환
string dec_to_n(int n, int number) {
	// 10진수이거나 숫자가 0이면 그대로 리턴
	if (number == 0 || n == 10) return to_string(number);
	string ret = "";
	while (number > 0) {
		int div = number % n;
		if (div >= 10) ret = Hex[div - 10] + ret;
		else ret = to_string(div) + ret;
		number /= n;
	}
	return ret;
}

string solution(int n, int t, int m, int p) {
	string answer = "";
	string num = "";
	for (int i = 0; i <= t * m; i++)
		num += dec_to_n(n, i);

	for (int i = 0; i < t; i++)
		answer += num[m * i + p - 1];
	return answer;
}


Java

class Solution {
    static final char[] Hex = {'A', 'B', 'C', 'D', 'E', 'F'};

    // n진수로 변환
    public String decToN(int n, int num) {
        if (num == 0 || n == 10) return String.valueOf(num);
        StringBuilder ret = new StringBuilder();
        while (num > 0) {
            int div = num % n;
            if (div >= 10) ret.insert(0, Hex[div - 10]);
            else ret.insert(0, div);
            num /= n;
        }
        return ret.toString();
    }

    public String solution(int n, int t, int m, int p) {
        String answer = "";
        String num = "";
        for (int i = 0; i <= t * m; i++)
            num += decToN(n, i);

        for (int i = 0; i < t; i++) {
            answer += num.charAt(m * i + p - 1);
        }
        return answer;
    }
}


'알고리즘 문제 풀이' 카테고리의 다른 글

[백준] 15971 두 로봇  (0) 2020.04.24
[프로그래머스] 구명보트  (0) 2020.04.24
[백준] 5566 주사위 게임  (0) 2020.04.24
[백준] 1941 소문난 칠공주  (0) 2020.04.24
[백준] 1938 통나무 옮기기  (0) 2020.04.23