본문 바로가기
728x90
반응형

알고리즘35

백준 2869 달팽이는 올라가고 싶다(Java) 일단 시간 제한이 상당히 빡세서 스캐너는 탈락 언뜻 보기에는 굉장히 쉬운 문제처럼 보였다. (올라간 길이 - 내려간 길이) * 일수 >= 총 막대길이 로 생각해서 부등식 풀면 되지 않을까? 이거 중학생도 풀겠네 라고 생각하고 코드짜기전에 예제 1 케이스를 대입해봤는데 바로 안 맞는다. 올라간 길이 = 2 내려간 길이 = 1 총 길이 = 5 라서 일수 = 5 / (2-1) = 5 겠네 라고 생각했는데 웬걸 예제 답에 4라고 떡하니 적혀있네? 정상에 올라간 후에는 미끄러지지 않는다. 라는 전제조건 때문이다. 1일차: 2 up 1 down = 최종위치 1 2일차: 2 up 1 down = 최종위치 2 3일차: 2 up 1 down = 최종위치 3 4일차: 2 up => 여기서 이미 5가 되어 버리고, 여기서 .. 2021. 11. 28. 20:31
백준 1193 분수찾기(Java) 으음.. 저렇게 보면 좀 머리가 아프다 이미지를 45도 돌려서 피라미드 모양을 만들었다 1/1 2/1 2/2 -> 1/3 4/1 2021. 11. 28. 01:42
백준 2292 벌집 - 등차수열 : 고등학교 수학문제 (Java) 알고리즘이 큰 영향을 미치지 않던 시절 시험 한두번 정도 접해본 적은 있었다. 그때 느낀 생각. 아 이게 연필로 푸는 수학문제면 잘 풀 텐데... 기본적인 중고등학교 수학 개념을 이해해야 풀 수 있는 문제 좋아함. 이번 문제가 딱 그랬음. 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지 (시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진.. 2021. 11. 22. 18:16
백준 1316 그룹 단어 체커 (Java) 문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출력한다. 처음 풀었을 때 틀린 답이라고 나와서... 왤까 하고 IDE에 .. 2021. 11. 20. 16:03
백준 2941 크로아티아 알파벳(Java) - 문자열 카운트 / 시행착오 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 입력 첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다. 출력 입력으로 주어진 단어가 몇 개.. 2021. 11. 14. 16:24
백준 1065 한수 (Java) - 로지컬한 케이스 분리는 언제나 중요하다 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 1보다 크거나 같고, 입력받은 수 자기 자신까지 정수 각 자리가 등차수열을 이루는 숫자를 체크하는데 1의자리, 10의자리 숫자는 당연히 여기에 모두 포함된다. 뺄 게 어딨다고? 그리고 1000의 경우에는 함정카드다. 1-0 = 1 , 0-0=0 으로 등차수열이 성립하지 않는다. 그러니 사실상 100부터 999.. 2021. 11. 10. 22:10
백준 4673 셀프넘버 (Java) 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라고 한.. 2021. 11. 10. 18:44
백준 8958 OX퀴즈 (Java) - charAt 문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 출력 각 테스트 케이스마다 점수를 출력한다. 예제 입력 1 예제 출력 1 5 OOXXOXXOOO 10 OOXXOOXXOO 9 OXOXO.. 2021. 11. 9. 20:59
백준 3052 나머지 (Java) - HashSet 사용하기 문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열번째 줄까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 10개의 자연수를 입력받고 %42 값을 저장해야 하는데 한가지 문제가 있다. 나머지의 종류 갯수를 구하고 싶은데 중복을 어떻게 제거하지? 1 4개 2 3개 이런식으로 나오면 4개 3개가 아닌 1, 2 두 .. 2021. 11. 7. 13:38
728x90
반응형