UTF - 8 / 16
·
Programming/기타
UTF에 대해서UTF란 유니코드 변환 형식(Unicode Transformation Format) 인코딩을 의미하는데,여기서 인코딩은 어떠한 정보, 데이터를 다른 형식으로 변환시키는 과정을 뜻한다. 대표적인 UTF방식으로 UTF-8과 16이 존재한다. 유니코드란?컴퓨터는 0과 1의 이진법만 이해하는데, 사람은 익히기만 한다면 그와 달리 매우 많은 언어를 구사할 수 있다.따라서 인간의 언어(자연어)를 컴퓨터(기계어)가 이해하기 위해서는 중개자가 필요하다.그 중개자 역할을 하는 것이 유니코드이다. 어떻게 이루어지는가?예를 들어 유니코드를 UTF-8로 인코딩을 한다고 가정해보자.인코딩 규칙은 다음과 같다.1. 1개 바이트를 사용하는 경우- 이 경우에는 가장 큰 비트에 0을 할당하고, 나머지 7비트에 기존의 아..
BOJ - 나이순 정렬 10814
·
코딩테스트
해결방법나이가 증가하는 순으로 정렬해야 하고, 나이가 같다면 먼저 가입한 순으로 정렬을 해야한다는 점을 구현해야 한다. 일단 stable_sort를 이용한다면 나이가 같을 때 먼저 가입한 순으로 정렬을 해야 한다는 점은 생각하지 않아도 좋다. 정렬하기 전의 상대적인 순서를 유지해주기 때문이다. 따라서 나이순으로 정렬을 하는 부분만 신경써주면 된다. 정답 코드#include #include #include #include using namespace std;int main(){ int N; cin >> N; vector> members; for (int i = 0; i > age >> name; members.push_back({ age, name }); } stable_sort(members.begin..
BOJ - 최대공약수와 최소공배수 2609
·
코딩테스트
해결방법최대공약수와 최소공배수를 구하는 공식을 알고 있다면 쉽게 구할수 있다. 두 수 a와 b를 가지고 문제를 푼다고 가정했을때최대공약수의 경우 a를 b로 나눈 나머지 값이 0과 같다면 b가 최대공약수가 되고, 아니라면 b와 b를 a와 b로 나눈 나머지를 가지고 반복을 해주는 형태로 구할 수 있다. 최소공배수의 경우 a와 b의 곱을 최대공약수로 나눠준 값이 된다. 정답 코드#include using namespace std;int GCD(int a, int b){ return (a % b == 0 ? b : GCD(b, a % b));}int LCM(int a, int b){ return a * b / GCD(a, b);}int main(){ int A, B; cin >> A >> B; cout
BOJ - 좌표 정렬하기 2 11651
·
코딩테스트
해결방법처음에 map을 사용해서 문제를 풀어보려고 했는데 잘 되지 않아서 vector와 pair를 섞어서 사용하는 방식으로 선회했다. 문제를 보면 y좌표를 가지고 정렬을 하라는 것을 알 수 있다.따라서 정렬 기준은1. y좌표값을 비교를 하고,2. 만약 y좌표값이 같다면 x좌표값을 비교한다.가 된다. 정답 코드#include #include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); int N, x, y; cin >> N; vector> dots; for (int i = 0; i > x >> y; dots.push_back({ x, y }); } s..
BOJ - 욱제는 결정장애야!! 14646
·
코딩테스트
해결방법우선, 2N번 돌리면 N일동안의 메뉴를 모두 정할수 있다고 하는 것으로 반복을 최소 2 * N번 해야 한다는 것을 알 수 있다. 문제의 핵심은 Menu[input - 1] 이 부분이다. 스티커를 붙이면 저 부분에 +1을 해주고, 아니라면 -1을 해주면 된다. 정답 코드#include using namespace std;int main(){ int N, input, num = 0, max = 0; int Menu[100000] = { 0 }; cin >> N; for (int i = 0; i > input; if (Menu[input - 1] == 0) num++; else if (Menu[input - 1] == 1) num--; Menu[input - 1]++; if (max
BOJ - 수 찾기 1920
·
코딩테스트
해결방법set을 이용하여 입력받은 값들 안에서 수가 존재하는지 찾아내는 구조이다. set은 중복이 없고 자동으로 정렬된다. 문제를 풀때 시간 제한때문에 unordered set을 사용했지만 그냥 set을 사용해도 풀리긴 할 것이다. 정답 코드#include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); int N, M; cin >> N; unordered_set Pool; for (int i = 0; i > num; Pool.insert(num); } cin >> M; for (int i = 0; i > num; if (Pool.find(num) != Pool.end()) { cout