PS (33) 썸네일형 리스트형 [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 .. [BOJ] 4141 Numbersrebmun 문제 링크 www.acmicpc.net/problem/4141 풀이 각 글자에 대해 숫자로 매핑해준 후 팰린드롬인지 검사하면 된다. Java 코드 더보기 처음엔 뒤집을 때도 StringBuilder를 이용해서 s를 다시 거꾸로 순회하며 구축한 후 비교해줬는데, StringBuffer의 reverse 메서드를 사용하면 그럴 필요가 없었다. import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); StringBuilder out = new StringBuilde.. [BOJ] 5637 가장 긴 단어 문제 링크 www.acmicpc.net/problem/5637 풀이 알파벳 또는 하이픈으로 이루어진 문자들만 받아서 현재 길이보다 길어질 때만 갱신하면 된다. C 코드 더보기 #include #include #include int main(void) { char ans[101] = "", tmp[101] = ""; while (~scanf(" %[a-zA-Z\-]", tmp)) { getchar(); if (strlen(ans) < strlen(tmp)) strcpy(ans, tmp); } for (int i = 0; ans[i]; ++i) putchar(tolower(ans[i])); return 0; } [BOJ] 4176 Digits 문제 링크 www.acmicpc.net/problem/4176 풀이 $x_0$은 매우 큰 값이지만, $x_1$부터는 int형으로도 다룰 수 있는 작은 값이 된다. 적당히 케이스를 나눠서 풀면 된다. Java 코드 더보기 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); StringBuilder out = new StringBuilder(); while (true) { String s = in.readLine(); if (s.equals("END")) .. [BOJ] 3546 Headshot 문제 링크 www.acmicpc.net/problem/3546 풀이 만약 랜덤으로 회전시킨 후 방아쇠를 당긴다면 살 확률은 (0의 개수)/(1의 개수)이다. 회전시키지 않고 바로 방아쇠를 당긴다면 살 확률은 (자신의 뒤에 0이 있는 0의 개수)/(0의 개수)이다. 두 확률을 비교해서 결과를 내면 된다. 이때, 실린더는 환형이므로 맨 앞과 맨 끝이 연결되어 있음에 주의하자. Java 코드 더보기 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Stri.. 이전 1 2 3 4 5 다음