코딩테스트
어제부터 코드카타 문제가 조금 어렵다고 느껴지기 시작했습니다.
1시간 안쪽으로 얼추 다 풀 수 있는 문제였는데 이제는 어느 정도 공식을 알아야 해결이 가능했습니다.
아래 문제는 아르토스테네스의 채를 활용해서 약수를 구분했습니다.
133ms → 2ms로 바뀔정도로 속도 차이가 있습니다.
[level 1] 기사단원의 무기 - 136798
https://school.programmers.co.kr/learn/courses/30/lessons/136798
[level 1] 기사단원의 무기 - 136798 풀이코드
#include <bits/stdc++.h>
using namespace std;
int cnt[100004];
int a = 0;
int getFactors(int a) {
int b = 0;
for (int i = 1; i <= sqrt(a); i++) {
if (a % i == 0) {
if (i == sqrt(a)) b++;
else b += 2;
}
}
return b;
}
int solution(int number, int limit, int power) {
int answer = 0;
answer += 1;
for (int i = 2; i <= number; i++) {
int fac = getFactors(i);
if (fac > limit) answer += power;
else answer += fac;
}
return answer;
}
CMD에서 이모지 렌더링이 다른 현상
이모지를 사용한 프로그램을 실행시켰을때 팀원들이 각자 다른 현상을 말하고 있어서 간단한 로직을 통해서 확인해 보았습니다.
echo 🐱👤 Hello, World! → 이 코드를 CMD에서 실행시켜 달라고 요청했습니다.
GPT와 구글링을 통해서 다양한 방법을 적용해 봤는데 해결이 안되었습니다.
윈도우 10 환경에서 동일하게 발생하고 있는 에러 같은데 임시 해결 방안으로는
임시 해결 방안
Visual Studio → View → Terminal 이렇게 터미널을 실행한 후에 exe파일이 있는 경로에서 실행시키면 이모지가 정상 출력 되었습니다.
다양한 방법을 시도했는 데 성공하지 못했습니다.
유니코드 코드 페이지 변경, 폰트 변경, CMD 툴 변경 등 다양하게 진행했습니다.
스트링 유틸리티 추가
유틸 클래스를 설정해서 유니코드 코드페이지 상태에서 편하게 문자열을 출력하려고 메서드를 설정했습니다.
#define을 사용하니 편하게 메서드 호출이 가능했습니다.
u8부분은 유니코드 코드페이지 상태에서 문자열 출력을 하려면
"문자열입니다." → u8"문자열입니다." 상태로 만들어야 가능합니다.
class UTIL
{
public:
#define uprint UTIL::UPrint
static void UPrint(string str)
{
cout << u8"" + str;
}
#define uprintendl UTIL::UPrintEndl
static void UPrintEndl(string str)
{
cout << u8"" + str << endl;
}
#define ustring UTIL::UString
static string UString(string str)
{
return u8"" + str;
}
}
#include <util.h>
int main()
{
uprint("uprint"); // UTIL::UPrint("uprint");
uprintendl("uprintendl"); // UTIL::UPrintEndl("uprintendl");
cout << usring("ustring") << endl; // UTIL::UString("ustring")
return 0;
}