2023. 6. 21. 20:52γCoding Test/Programmers
πλ¬Έμ 보λ¬κ°κΈ°
π¨π»νμ΄ κ³Όμ
λ¬Έμ λ₯Ό 보μλ§μ λ¬΄μ¨ λμ리 μ¬λλ€μ΄ μ΄λ¬κ³ λ Έλ μΆμμ΅λλ€. μΉ΄μΉ΄μ€μ κ°λ μ¬λλ€μ λ€ μ λ¬κ³ λ Έλ κ±ΈκΉμ?...
μ무νΌ, μ λ μ΄ λ¬Έμ μ μλλ₯Ό νμ νκΈ° νλ€μ΄μ μκ°μ΄ μ’ κ±Έλ Έμ΅λλ€. λ€μ λ΄μ©μ μ΄ν΄νλ λ° μ’ κ±Έλ Έμ΄μ.
ν μ¬λμ΄ λ§νλ μ«μλ 무쑰건 ν μ리 μ«μλ€.
(μμ§μ "3" -> μ΄μ§μ "11"λ‘ λ³ννλλΌλ ν μ¬λλ§λ€ ν μλ¦¬μ© μ½λλ€.)
μμ μΈ n = 2, t = 4, m = 2, p = 1λ‘ λ³΄κ² μ΅λλ€. μ°μ μμ§μ 0λΆν° μ°¨λ‘λλ‘ 2μ§μλ‘ λ³νν΄λ³΄λ©΄ λ€μκ³Ό κ°μμ.
// μμ§μ : 0 1 2 3 4 5 6 7 ...
// μ΄μ§μ : 0 1 10 11 100 101 110 111 ... -> λ€ μ΄μ΄λΆμ΄λ©΄ 011011100101110111
μμ§μ 0 ~7λ₯Ό λ³νν μ΄μ§μλ€μ λͺ¨λ μ΄μ΄λΆμ΄λ©΄, "011011100101110111"μ΄λΌλ λ¬Έμμ΄μ΄ λμ΅λλ€. κ·ΈλΌ μ¬κΈ°μ μ¬λμ μ(m)μ λ¬Έμ μ μ£ΌμΈκ³΅μΈ νλΈμ μλ²(p), νλΈκ° λ§ν΄μΌ νλ νμ(t)λ₯Ό ν΅ν΄ κ³μ°ν΄μΌ ν©λλ€.
pλ μ΅μκ°μ΄ 1μ΄λ―λ‘, λ¬Έμμ΄μ 첫 μμ μΈλ±μ€μΈ 0κ³Ό λ§μΆλ €λ©΄ p - 1μ ν΄μ€μΌ ν©λλ€. νλΈμ 첫 μλ²μ p - 1μ΄λ―λ‘, κ·Έ λ€μ μλ²μ μ΄μ νλΈμ μλ²μμ μ¬λ μ(m)λ§νΌ λν΄μ£Όλ©΄ λ©λλ€.
μμ λ‘ μμλ₯Ό λ€λ©΄, p = 1, m = 2, t = 4 μ λλ€.
// p - 1 = 0, m = 2μ΄λ―λ‘ μ²« λ²μ§Έ μλ²μΈ 0μ μ΄μ΄ mμ© λνλ©΄ 0, 2, 4, 6μ΄ λμ΅λλ€.
// 0, 2, 4, 6μ ν΄λΉνλ μΈλ±μ€ μμ 'p' νμλ₯Ό νμμ΅λλ€.
p p p p
011011100101110111
// p1 = 0, p2 = 1, p3 = 1, p4 = 1 μ΄λ―λ‘, λ€ μ΄μ΄ λΆμ΄λ©΄ μ λ΅μ΄ λ©λλ€.
// answer = "0111"
μ΄λ° μμΌλ‘ λ³νν λ¬Έμμ΄μμ νλΈκ° λ§ν΄μΌ ν μ«μμ μΈλ±μ€λ₯Ό κ³μ°ν μ μκ³ , λ§ν νμκ° tλ²μ΄ λλ©΄ μ λ΅μ 리ν΄νλ©΄ λ©λλ€. μ λ λ¬Έμ μμ μ΄ λΆλΆμ μ΄ν΄νλ λ° μ€λ κ±Έλ Έμ΄μ... κ·ΈλΌ, ν΄μΌ ν μΌλ€μ μ°¨λ‘λλ‘ λ€μκ³Ό κ°μμ.
μμ§μλ₯Ό nμ§μλ‘ λ³ννλ κ³Όμ μ μ¬μ°λ, μ΄λ ΅μ§ μμμ΅λλ€.
βοΈμμ€ μ½λ λ° κ²°κ³Ό
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
char digitSystems[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
string GetConvertedDigit(int num, int n) {
string result;
while (true) {
int quotient = num / n;
int remainder = num % n;
result.push_back(digitSystems[remainder]);
if (quotient == 0)
break;
num = quotient;
}
reverse(result.begin(), result.end());
return result;
}
string solution(int n, int t, int m, int p) {
string numbers = "";
string answer = "";
int currentNum = 0;
int myTurnCount = 0;
int myTurnIndex = p - 1;
while (myTurnCount < t) {
string convertedDigit = GetConvertedDigit(currentNum, n);
numbers += convertedDigit;
if (myTurnIndex < numbers.length()) {
answer += numbers[myTurnIndex];
myTurnIndex += m;
myTurnCount++;
}
currentNum++;
}
return answer;
}
'Coding Test > Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Programmers] Lv2. λ λ°λ¨ΉκΈ° | C++ (0) | 2023.06.22 |
---|---|
[Programmers] Lv2. μ€νμ±ν λ°© | C++ (0) | 2023.06.21 |
[Programmers] Lv2. λ λ§΅κ² | C++ (0) | 2023.06.21 |
[Programmers] Lv2. kμ§μμμ μμ κ°μ ꡬνκΈ° | C++ (0) | 2023.06.21 |
[Programmers] Lv2. νκ² λλ² | C++ (0) | 2023.06.20 |