1. 문제 링크https://www.acmicpc.net/problem/1307 2. 풀이 방법마방진의 크기 n이 홀수인 경우, 4의 배수인 경우, 4의 배수가 아닌 2의 배수인 경우로 나누어서 다르게 구현했다.마방진을 만드는 방법은 다른 글에 이미 잘 정리가 되어있어서, 링크로 대신한다. 먼저, n이 홀수인 경우에는 아래 글을 참고했다.https://destiny738.tistory.com/244 홀수 마방진홀수 마방진은 마방진을 만드는 것중에서 가장 간단한 형태이다. 위에서 파란원이 만들려고 하는 마방진이다.(크기 3짜리 3*3 마방진을 만든다.) 다음과 같은 과정을 따르며 마방진을 완성해간다destiny738.tistory.com 다음으로, n이 4의 배수인 경우에는 아래 글을 참고했다. (위의 글..
1. 문제 링크https://www.acmicpc.net/problem/25547 2. 사전 지식이 글을 읽기 전에, 최대공약수와 최소공배수에 대한 아래 글을 함께 읽으면 좋다.https://infikei.tistory.com/46 [Algorithm] 유클리드 호제법1. 유클리드 호제법유클리드 호제법(또는 유클리드 알고리즘, Euclidean Algorithm)은 두 양의 정수의 최대공약수를 구하는 방법 중 하나이다.여기서 호제라는 말은 서로 나눈다는 것을 의미한다. 2.infikei.tistory.com 3. 접근 방법우선 세 정수 $A$, $B$, $C$ 가 다음 두 조건을 만족한다고 가정하자.$\gcd(A, B) = \gcd(A, C)$$\mathrm{lcm}(A, B) = \mathrm{lcm}..
1. 유클리드 호제법유클리드 호제법(또는 유클리드 알고리즘, Euclidean Algorithm)은 두 양의 정수의 최대공약수를 구하는 방법 중 하나이다.여기서 호제라는 말은 서로 나눈다는 것을 의미한다. 2. 최대공약수의 정의최대공약수(GCD, Greatest Common Divisor)는 두 개 이상의 정수의 공통 약수 중 가장 큰 양의 정수이다.또한 최대공약수가 $1$인 두 정수를 서로소(coprime)라고 한다. ($0$과 어떤 정수 $a$의 최대공약수는 $a$로 정의할 수 있다. $0$은 모든 정수의 배수이기 때문이다.) 3. 최대공약수의 특징두 정수 $a$와 $b$의 최대공약수 $\gcd(a, b)$에 대해, $ax + by = \gcd(a, b)$를 만족하는 정수 $x$, $y$가 존재한다...
1. 연산자 (산술적 왼쪽 시프트, Arithmetic Left Shift)왼쪽으로 비트를 이동시키고, 이동 후 오른쪽에 생긴 빈 공간은 0 으로 채운다.비트를 한 번 이동시킬 때마다 값에 2가 곱해진다.예 : 1 → $2^3 = 8$ 2. >> 연산자 (산술적 오른쪽 시프트, Arithmetic Right Shift)오른쪽으로 비트를 이동시키고, 이동 후 왼쪽에 생긴 빈 공간은 양수의 경우 0 으로, 음수의 경우 1 로 채운다.즉, 부호 비트를 유지하면서 오른쪽으로 비트를 이동시킨다.비트를 한 번 이동시킬 때마다 값이 2로 나눠진다.예 : -8 >> 2 → $-8 \div 4 = -2$ 3. >>> 연산자 (논리적 오른쪽 시프트, Logical Right Shift)C/C++에 존재하지 않는 연산자..
1. 버블 정렬이란?서로 인접한 두 원소를 비교하고, swap 연산을 수행하면서 정렬하는 방식이다.가장 큰 값이 배열의 끝으로 이동하는 과정이 물방울이 수면으로 떠오르는 듯한 모습을 보이기 때문에 버블 정렬이라는 이름이 붙었다. 2. 버블 정렬의 동작 과정배열의 처음부터 끝까지 순회하면서 인접한 두 원소를 차례대로 선택한다.인접한 두 원소를 비교하여 정렬 순서와 맞지 않다면, 서로 자리를 교환한다.배열의 끝에 가장 큰 값이 정렬되면, 다음 반복에서는 그 값을 제외하고 정렬한다.배열이 완전히 정렬될 때까지 1~3 과정을 반복한다. 3. 버블 정렬의 구현 코드아래는 버블 정렬을 구현한 코드이다.void bubble_sort(vector &nums) { int n = nums.size(); for ..
1. IN서브쿼리의 결과를 모두 가져온 후, 메인 쿼리의 WHERE 절에서 결과 집합과 비교하는 방식이다.서브쿼리의 결과에 NULL 이 포함되는 경우에는 결과가 의도와 다르게 동작할 수 있으므로 주의해야 한다. 아래는 IN 을 사용하여 작성한 쿼리의 예시이다.SELECT *FROM aWHERE a.key IN ( SELECT b.key FROM b);b 테이블에 먼저 접근한다.b.key 를 IN 리스트에 나열한 후 a.key 에 공급한다.즉, 이 쿼리에서 b 테이블은 공급자 역할을 수행한다. 2. EXISTS서브쿼리에서 조건을 만족하는 행이 존재하는지 여부를 확인하는 방식이다.즉, 서브쿼리에서 결과 집합을 반환하는 것이 아니라, 서브쿼리에서 조건을 만족하는 행을 찾는 즉시 반환하는 것이다. 따..
1. WITH 절과 공통 테이블 표현식 (CTE, Common Table Expression)WITH 절은 MySQL에서 공통 테이블 표현식(CTE)을 정의하기 위해 사용하는 구문이다.공통 테이블 표현식(CTE)은 단일 SQL 문 내에서 임시 이름이 붙은 임시 결과 집합으로, 해당 SQL 문 내에서 여러 번 참조하여 사용할 수 있다. 2. WITH 절과 공통 테이블 표현식(CTE)의 특징WITH 절과 공통 테이블 표현식은 성능 최적화 관점에서 반복된 서브쿼리를 줄이고 가독성과 유지보수성을 높이는 데 도움을 준다.중첩된 서브쿼리를 사용하지 않고도 논리적으로 쿼리를 나눌 수 있다.공통 테이블 표현식은 같은 statement 내에서 여러 번 참조될 수 있으며, 여러 번 참조되더라도 한 번만 실행되어 그 결과가..
삼성 청년 SW 아카데미SAMSUNG Software Academy For Youth줄여서 SSAFY (싸피) 한 달 전만 하더라도 내가 이 글을 쓸 거라고는 전혀 예상하지 못했는데, 어쩌다보니 싸피 11기에 합격해버렸다!사실 이 글을 쓰는 지금도 잘 믿기지는 않는다.. (2023.12.30. 작성)당장 1월부터 교육이 시작된다고 해서, 더 정신없어지기 전에 그동안의 과정을 글로 기록해두려고 한다. 우선 SSAFY 11기 모집 일정은 다음과 같았다.지원서 접수 : 2023.10.23. (월) ~ 11.06. (월)SW적성진단 (비전공자) : 2023.11.11. (토)에세이 제출 : 2023.11.07. (화) ~ 11.18. (토)1차 결과 발표 : 2023.11.28. (화)인터뷰 : 2023.12...
현재 본인이 사용 중인 갤럭시 노트20 울트라(ONE UI 5.0, 안드13) 기준으로, 휴대폰의 절전모드를 켜면 기본적으로 절전모드와 120Hz를 동시에 설정할 수 없도록 막혀있다.하지만, 아래 방법을 이용하면 절전모드를 켜고도 화면 주사율을 120Hz로 고정하는 꼼수(?)를 부릴 수 있다.또한 갤럭시 노트20 울트라에서는 기본적으로 60Hz 고정주사율 or 1Hz~120Hz 가변주사율 2가지 옵션만 존재하는데, 아래 방법을 활용하면 120Hz 고정주사율이나 96Hz 고정주사율 같은 다양한 옵션도 적용할 수 있다. 참고로, 같은 방법으로 갤럭시 무음 카메라도 설정이 가능하다. 사실 이 글은 본인도 맨날 방법 까먹고 찾아보다가 한번 정리해두는 것이 좋을 것 같아서 작성한 글입니다.따라서 기기를 잘 다루시..
2의 거듭제곱을 외우고 있다고 말하면 그걸 왜 외우냐는 질문이 가장 많이 들어온다.어릴 적에 심심해서 외웠던 게 시작이었던 것 같다. 어릴 적에 10제곱까지 외웠다가 20제곱까지 늘렸던 기억이 난다.대학교 와서 27제곱까지 외웠던 것 같다.뇌 용량의 한계로 더 이상 외우려고 하지 않았는데,최근에 알고리즘 공부하고 코드 짜다보니 그 유명한 2^31 - 1 = 2147483647을 자주 접하게 되었다.그래서 내친김에 32제곱까지 외워버렸다. 2^1 = 22^2 = 42^3 = 82^4 = 162^5 = 32 2^6 = 642^7 = 1282^8 = 2562^9 = 5122^10 = 1024 2^11 = 20482^12 = 40962^13 = 81922^14 = 163842^15 = 32768 2^16 = 6..