문제 전자 제품에는 저항이 들어간다. 저항은 색 3개를 이용해서 그 저항이 몇 옴인지 나타낸다. 처음 색 2개는 저항의 값이고, 마지막 색은 곱해야 하는 값이다. 저항의 값은 다음 표를 이용해서 구한다. black 0 1 brown 1 10 red 2 100 orange 3 1,000 yellow 4 10,000 green 5 100,000 blue 6 1,000,000 violet 7 10,000,000 grey 8 100,000,000 white 9 1,000,000,000 예를 들어, 저항의 색이 yellow, violet, red였다면 저항의 값은 4,700이 된다. 입력 첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다...
문제 미아는 과일을 좋아하는 소녀이다. 그녀의 비밀 노트에는 과일에 대해 그녀가 수집한 정보들이 가득하다. 평소와 다를 바 없이 과일들을 잔뜩 관찰하고 기쁜 마음으로 하교하던 어느 날, 친구가 뒤에서 덮치는 바람에 실수로 비밀 노트를 물에 빠뜨리고 말았다. 다행히 노트는 건질 수 있었지만, 노트에 적어두었던 정보들이 번지고 지워져버려 일부는 알아볼 수 없게 되었다. 노트에 적힌 문자열이 번진 패턴은 일정했는데, 가령 "abc" 문자가 세로로 3글자씩, 가로로 2글자씩 번진 경우는 다음과 같았다. aabbcc aabbcc aabbcc 이 패턴을 이용해 문자열을 완전히 복원할 수 있을 것 같았지만, 아쉽게도 번진 문자열의 일부는 지워진 상태였다. 너무 많이 지워져버려서 해당 자리의 문자를 유추할 수 없는 경..
문제 문자열 s가 있을 때, f(s)는 s를 무한번 붙인 문자열로 정의한다. 예를 들어, s = "abc" 인 경우에 f(s) = "abcabcabcabc..."가 된다. 다른 문자열 s와 t가 있을 때, f(s)와 f(t)가 같은 문자열인 경우가 있다. 예를 들어서, s = "abc", t = "abcabc"인 경우에 f(s)와 f(t)는 같은 문자열을 만든다. s와 t가 주어졌을 때, f(s)와 f(t)가 같은 문자열을 만드는지 아닌지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 s, 둘째 줄에 t가 주어진다. 두 문자열 s와 t의 길이는 50보다 작거나 같은 자연수이고, 알파벳 소문자로만 이루어져 있다. 출력 첫째 줄에 f(s)와 f(t)가 같으면 1을, 다르면 0을 출력한다. 풀이 과정 f(s)..
문제 문제는 매우 간단하다. N을 N번 출력하는 프로그램을 작성하여라. 다만, 답이 길어지는 경우 답의 앞 M자리만 출력한다. 입력 첫 번째 줄에는 N, M이 주어진다. (1 ≤ N, M ≤ 2016) 출력 N을 N번 출력한다. 만약 답이 길어지면 답의 앞 M자리를 출력한다. 풀이 과정 출력대로 진행한다. N을 N번 출력하는 도중 답이 길어지면 답의 앞 M자리를 출력한다. N을 출력하던 도중에 중간에 잘릴 수도 있으므로, 잘림 현상을 처리하기 위해 N을 한 글자씩 출력하면서 M을 넘지 않는지 체크한다. 재귀를 이용하여 제곱 함수와 숫자에서 특정 자리수를 가져오는 함수를 만들어 한 글자씩 M을 넘지 않도록 출력하였다. C #include #include int power(int n, int k) { if ..
문제 알파벳 대문자로 구성되어있는 문자열 S가 주어졌을 때, S에 등장하지 않는 알파벳 대문자의 아스키 코드 값의 합을 구하는 프로그램을 작성하시오. 문자열 S가 “ABCDEFGHIJKLMNOPQRSTUVW” 일 때, S에 등장하지 않는 알파벳 대문자는 X, Y, Z이다. X의 아스키 코드 값은 88, Y는 89, Z는 90이므로 이 아스키 코드 값의 합은 267이다. 알파벳 대문자의 아스키 코드 값은 다음과 같다. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 입력 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번..
문제 도현이네 반 학생 N명의 이름과 국어, 영어, 수학 점수가 주어진다. 이때, 다음과 같은 조건으로 학생의 성적을 정렬하는 프로그램을 작성하시오. 국어 점수가 감소하는 순서로 국어 점수가 같으면 영어 점수가 증가하는 순서로 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.) 입력 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 이름은 알파벳 대소문자로 이루어진 문자..
문제 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대를 만들려고 한다. 막대를 자르는 가장 쉬운 방법은 절반으로 자르는 것이다. 지민이는 아래와 같은 과정을 거쳐서 막대를 자르려고 한다. 지민이가 가지고 있는 막대의 길이를 모두 더한다. 처음에는 64cm 막대 하나만 가지고 있다. 이때, 합이 X보다 크다면, 아래와 같은 과정을 반복한다. 가지고 있는 막대 중 길이가 가장 짧은 것을 절반으로 자른다. 만약, 위에서 자른 막대의 절반 중 하나를 버리고 남아있는 막대의 길이의 합이 X보다 크거나 같다면, 위에서 자른 막대의 절반 중 하나를 버린다. 이제, ..
문제 세 수 A, B, C를 입력 받은 다음, ( ( ( ( A XOR B ) XOR B ) XOR B ) … ) XOR B 형태로 연산을 C회 했을 때의 결과값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A, B, C가 주어진다. (0 < A, B, C ≤ 10^9) 출력 첫째 줄에 계산된 결과를 출력한다. 풀이 과정 똑같은 수 두 개를 XOR 연산 하면 0을 얻을 수 있다는 점 아시나요? 그리고, 어떠한 수와 0을 XOR 연산 하면 수가 바뀌지 않는다는 점도 아시나요? XOR 은 비트가 다를 때 1이기 때문에, 같은 수끼리 XOR 을 하면 모두 0이 나오고, N과 전체가 0인 수와 XOR 을 하면 결국 비트 중에 1이 포함된 수는 N밖에 없기 때문에, N이 그대로 나오게 됩니다. 문제는 A에 ..
- Total
- Today
- Yesterday
- Greedy
- bruteforcing
- bitmask
- math
- backtracking
- 백준
- BFS
- lca
- BOJ
- Python
- kmp
- stack
- lazy-propagation
- C
- segment-tree
- number_theory
- knapsack
- codeup
- Prefix-Sum
- C++
- string
- DP
- Binary-Search
- Sort
- Recursion
- PS
- sparse_table
- ad_hoc
- java
- implementation
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
