[코딩테스트] [17609] 회문 & [15831] 준표의 조약돌
·
알고리즘/Two Pointer
[17609] 회문시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초 (추가 시간 없음)512 MB315558988663429.094%문제회문(回文) 또는 팰린드롬(palindrome)은 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열을 말한다. 예를 들어 ‘abba’ ‘kayak’, ‘reviver’, ‘madam’은 모두 회문이다. 만일 그 자체는 회문이 아니지만 한 문자를 삭제하여 회문으로 만들 수 있는 문자열이라면 우리는 이런 문자열을 “유사회문”(pseudo palindrome)이라고 부른다. 예를 들어 ‘summuus’는 5번째나 혹은 6번째 문자 ‘u’를 제거하여 ‘summus’인 회문이 되므로 유사회문이다.여러분은 제시된 문자열을 분석하여 그것이 그 자체로 회문인지, 또는..
[코딩테스트] [6236] 용돈관리 & [2110] 공유기설치
·
알고리즘/Binary Search
시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초128 MB221546761462529.061%문제현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 하였다. 현우는 통장에서 K원을 인출하며, 통장에서 뺀 돈으로 하루를 보낼 수 있으면 그대로 사용하고, 모자라게 되면 남은 금액은 통장에 집어넣고 다시 K원을 인출한다. 다만 현우는 M이라는 숫자를 좋아하기 때문에, 정확히 M번을 맞추기 위해서 남은 금액이 그날 사용할 금액보다 많더라도 남은 금액은 통장에 집어넣고 다시 K원을 인출할 수 있다. 현우는 돈을 아끼기 위해 인출 금액 K를 최소화하기로 하였다. 현우..
[코딩테스트] Parametric Search [2417] 제곱근 구하기 & [2805] 나무자르기 & [1654] 랜선 자르기
·
알고리즘/Binary Search
Parmaetric SearchBinary Search를 이용한 최적값 탐색 기법을 Parmaetric Search라고 한다.최적값이란, ~~를 할 수 있는 최소값, 최대값, 어떤 조건을 만족하는 최적값을 의미한다. 좀 더 자세히 봐보자.연속적이거나 이산적인 값의 집합에서 최적갑 X를 찾는 문제에서 X를 경계로 조건을 만족하는 집합과 답이 될 수 없는 집합을 판정할 수 있을 때 추정값 A에 대한 판정을 반복해 X를 찾는 방법이다.이전에 풀었던 문제 숫자 카드 2를 비유해서 봐보자.모든 추정값 A를 모두 확인하지 않아도 최적값 X를 기준으로 판정결과가 나눠진다면 Binary Search를 적용해볼 수 있다.그렇다면 Parmaetric Search를 이용한 문제를 풀어 보자.[2417] 정수제곱근시간 제한 ..
[코딩테스트] [1931] 회의실 배정
·
알고리즘/Sort
[1931] 회의실 배정시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초128 MB237241790935455230.999%문제한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.입력첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보..
[코딩테스트] [18870] 좌표 압축 & [2910] 빈도 정렬
·
알고리즘/Sort
[18870] 좌표 압축시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초512 MB109939467783500739.733%문제수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다.X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.입력첫째 줄에 N이 주어진다.둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.출력첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.제한1 ≤ N ≤ 1,000,00010 ≤ X ≤ 10i99처음 문제풀이처음..
[코딩테스트] [2840] 행운의 바퀴 & [2817] ALPS식 투표
·
알고리즘/Brute Force
행운의 바퀴시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초128 MB93722424171723.798%문제상덕이는 최근에 행운의 바퀴를 구매했다. 상덕이는 바퀴의 각 칸에 알파벳 대문자를 아래 그림과 같이 적었다.바퀴에 같은 글자는 두 번 이상 등장하지 않는다. 또, 바퀴는 시계방향으로만 돌아간다. 바퀴 옆에는 화살표가 있는데, 이 화살표는 항상 한 곳을 가리키고 있으며, 돌아가는 동안 가리키는 글자는 바뀌게 된다. 위의 그림에서는 H를 가리키고 있다.상덕이는 바퀴를 연속해서 K번 돌릴 것이다. 매번 바퀴를 돌릴 때 마다, 상덕이는 화살표가 가리키는 글자가 변하는 횟수와 어떤 글자에서 회전을 멈추었는지를 종이에 적는다.희원이는 상덕이가 적어놓은 종이를 발견했다. 그 종이를 바탕으로 상덕이가 ..
[코딩테스트] [10250] ACM호텔 & [1730] 판화
·
알고리즘/Brute Force
[10250] ACM호텔시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초256 MB206413709675986933.316%문제ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다.문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H..
[코딩테스트] [11068] 회문인 수 & [3085] 사탕게임
·
알고리즘/Brute Force
회문인 수시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초256 MB47662414200154.331%문제어떤 수를 왼쪽부터 읽어도, 오른쪽부터 읽어도 같을 때 이 수를 회문인 수라고 한다. 예를 들어, 747은 회문인 수이다. 255도 회문인 수인데, 16진수로 표현하면 FF이기 때문이다. 양의 정수를 입력받았을 때, 이 수가 어떤 B진법 (2 ≤ B ≤ 64)으로 표현하면 회문이 되는 경우가 있는지 알려주는 프로그램을 작성하시오. B진법이란, 한 자리에서 수를 표현할 때 쓸 수 있는 수의 가짓수가 B라는 뜻이다. 예를 들어, 십진법에서 B는 10이다.입력입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 테스트 데이터의 수를 나타내는 정수 T..
[코딩테스트] [10989] 수정렬하기3 & [3273] 두수의합
·
알고리즘/Array
수 정렬하기 3시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율5 초 (하단 참고)8 MB (하단 참고)324390777255931523.852%문제N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.출력첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.문제풀이이 문제는 저번에 풀었던 줄세우기와 유사한 문제로 입력받은 값을 배열로 받아 정렬을 해주는 문제이다.이 문제의 시간복잡도와 공간복잡도를 생각해보자.시간복잡도 & 공간복잡도시간 제한은 5초이다. 만약 저번 줄세우기 문제를 풀었던 ..
[코딩테스트] [1236] 성지키기 & [10431] 줄세우기
·
알고리즘/Array
성지키기문제영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오.입력첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다.출력첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.문제풀이1. 각 행과 열에 경비원이 있는지 확인하기일단 2차원 배열로 N*M으로 구성된 칸을 만들어보자 그리고 경비원을 넣어주어 ..
[코딩테스트] [1157] 단어 공부 & [1543] 문서검색
·
알고리즘/String
단어 공부문제알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.입력첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.출력첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.문제 풀이문자열을 대문자로만 입력 받기Scanner 클래스와 next() 메서드를 사용하여 문자열을 입력 받는다.import java.util.Scanner Scanner sc = new Scanner(System.in); String input = sc.next().toUppe..
[코딩테스트] [2744]대소문자 바꾸기 & [1919]애너그램 만들기
·
알고리즘/String
코딩테스트 준비JAVA로 코딩테스트를 준비하기로 하였다.JAVA만 코딩테스트를 보는 회사가 많다. 내 시장성 가치를 올리기 위해 수요가 많은 시장을 선택한다.추후 안드로이드 개발도 관심이 있는데 코틀린이 자바와 완전한 상호운용이 가능하고 구문 전환이 용이하므로 자바 개발자에게 매력적이라고 한다.공부는 인터넷 강의에 나와있는 백준 문제대로 풀이를 하고 하루에 한 번씩 같이 코딩테스트를 공부하는 스터디원분과 손코딩으로 작성하며 문제풀이를 설명하는 방식이다.[2744] 대소문자 바꾸기문제영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오.입력첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다...
[백준/Gold IV] 오큰수 - 17298
·
알고리즘/백준
[Gold IV] 오큰수 - 17298문제 링크 분류자료 구조, 스택 문제 설명크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다.예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다.입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수..
[백준/Silver V] 셀프 넘버 - 4673
·
알고리즘/Brute Force
분류브루트포스 알고리즘, 구현, 수학 문제 설명셀프 넘버는 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, 14..
[백준/Silver III] 단어 뒤집기 2 - 17413
·
알고리즘/String
분류자료 구조, 구현, 스택, 문자열 문제 설명문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다.먼저, 문자열 S는 아래와과 같은 규칙을 지킨다.알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 있다.문자열의 시작과 끝은 공백이 아니다.''가 문자열에 있는 경우 번갈아가면서 등장하며, '태그는 ''로 끝나는 길이가 3 이상인 부분 문자열이고, '' 사이에는 알파벳 소문자와 공백만 있다. 단어는 알파벳 소문자와 숫자로 이루어진 부분 문자열이고, 연속하는 두 단어는 공백 하나로 구분한다. 태그는 단어가 아니며, 태그와 단어 사이에는 공백이 없다.입력첫째 줄에 문자열 S가 주어진다. S의 길이는 100,000 이하이다.출력첫째 줄에 문자열 S의..