본문 바로가기

전체 글

(39)
[BOJ] 8965 Circular Sequence 문제 링크 www.acmicpc.net/problem/8965 풀이 문자열로 만들 수 있는 모든 경우의 수에 대해 어떤 경우가 가장 사전순으로 앞서는지 구하면 된다. Java 코드 더보기 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(in.readLine()); StringBuilder out = new StringBuilder(); while (T-- > 0) { String s = in.readLin..
[프로그래머스] Level 2 다음 큰 숫자 문제 링크 programmers.co.kr/learn/courses/30/lessons/12911 풀이 n+1부터 시작해서 1씩 증가시키며 켜진 비트의 수가 같은 경우를 찾으면 된다. 이렇게 풀 경우 최악의 경우는 어떻게 될까? 대강 따져보자면 n은 최대 100만이므로 사용되는 비트의 수는 많아봤자 20개다. 20개의 비트를 재조정하는 것으로 항상 모든 답이 나올 수 있으니 연산의 수는 $2^{20}$을 넘지 않는다. C++ 코드 더보기 프로그래머스는 clang++으로 컴파일한다. gcc나 clang에는 켜진 비트의 수를 구하는 내장함수인 __builtin_popcount라는 함수가 있다. int solution(int n) { int cnt = __builtin_popcount(n); for (int ..
티스토리 구글 검색 적용 적용 방법 1. search.google.com/search-console/welcome 에 접속한다. 2. URL 접두어를 선택하여 자신의 블로그 주소를 붙여넣고 [계속]을 누른다. 3. 소유권 확인은 HTML 태그로 진행한다. 4. 메타태그를 복사해서 티스토리 스킨 편집의 HTML 편집에 들어가 붙여넣고 적용한다. 5. 다시 구글 서치콘솔로 돌아와 확인 버튼을 누르면 소유권이 확인된다. 6. 속성으로 이동하여 색인의 Sitemaps 탭을 누른다. 7. rss와 sitemap.xml을 등록한다. 8. URL 색인을 등록한다.
[C++20] #define sz(x) (int)x.size()는 이제 그만 개요 #define sz(x) (int)x.size() C++로 PS를 좀 해본 사람이라면 누구나 공감할 만한 매크로일 것이다. 생소한 사람들을 위해 사용 예시를 들어 보자면, 다음과 같다. std::vector vec; // do something for (int i = 0; i < sz(vec); ++i) { // ... } 대충 벡터 등의 컨테이너 크기를 구하는 데 쓸 수 있다. 하지만 이렇게 쓸 거라면 그냥 vec.size()로 쓰지 않고 왜 굳이 (int)로 번거롭게 형변환을 하는 것일까? 형변환 하는 이유 그 이유는 size() 메서드가 std::size_t 타입을 반환하기 때문이다. std::size_t는 unsigned integer이므로 자칫하면 의도치 않은 상황을 유발할 수 있다. 다음..
[BOJ] 12779 상품 is 뭔들 문제 링크 www.acmicpc.net/problem/12779 풀이 약수의 개수가 홀수라는 뜻은 어떤 자연수를 제곱한 제곱수라는 뜻이다. 따라서, $a$와 $b$ 사이에 존재하는 제곱수의 개수를 세면 된다. Java 코드 더보기 import java.io.*; import java.util.StringTokenizer; public class Main { static long gcd(long a, long b) { return b > 0 ? gcd(b, a % b) : a; } public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System..
[BOJ] 13430 합 구하기 문제 링크 www.acmicpc.net/problem/13430 풀이 $S$는 다음과 같다. $$ \begin{aligned} S(0, n) &= n\\ S(1, n) &= \sum_{i=1}^{n} i\\ &= \frac{n(n+1)}{2} \\ S(2, n) &= \sum_{i=1}^{n} \frac{i(i+1)}{2}\\ &= \frac{n(n+1)(n+2)}{6}\\ S(3, n) &= \sum_{i=1}^{n} \frac{i(i+1)(i+2)}{6}\\ &= \frac{n(n+1)(n+2)(n+3)}{24}\\ \end{aligned} $$ $S(k, n) = \frac{n(n+1)(n+2)\cdots(n+k)}{(k+1)!}$이라는 규칙은 보이는데, 실제로 성립하는 것을 보이려면 어떻게 해야 ..
[프로그래머스] Level 2 스킬트리 문제 링크 programmers.co.kr/learn/courses/30/lessons/49993 풀이 선행 스킬을 이용해 각 스킬을 배워야하는 순서를 배열에 1, 2, 3, ... 순서로 체크한다. 체크되지 않은 나머지 스킬들은 언제 배워도 상관 없으므로 적당히 0으로 둔다. 이제 각 스킬트리를 순회하면서 선행 스킬에 포함되는 스킬의 순서가 1, 2, 3, ... 순서로 증가하는지 확인한다. 이 순서가 지켜지지 않았다는 것은 불가능한 스킬트리라는 뜻이 된다. C++ 코드 더보기 #include using namespace std; int solution(string skill, vector skill_trees) { int order[26]{}; for (int i = 0; i < skill.size(..
[BOJ] 4197 Logo 문제 링크 www.acmicpc.net/problem/4197 풀이 위 그림은 2차원 좌표평면에서 $x$축 방향과 이루는 각도가 $\theta$인 상태에서 $x$만큼 걸어가는 경우이다. 그러면 변위는 다음과 같다. $$ \begin{aligned} \Delta x &= a \cos \theta\\ \Delta y &= a \sin \theta \end{aligned} $$ 따라서, $x$축 방향과 이루는 각도를 누적하면서 변위만큼 갱신하고 처음 위치와의 거리를 구하면 된다. Java 코드 더보기 import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws ..