본문 바로가기

Algorithm/String

(138)
(Python) - 백준(BOJ) 5893번 : 17배 답 www.acmicpc.net/problem/5893 5893번: 17배 첫째 줄에 이진수 N이 주어진다. N은 최대 1000자리인 이진수이며, 0이 들어오는 경우는 없다. www.acmicpc.net 진법변환을 이용해 답을 출력하는 문제였습니다. bin(number) __builtin__ module에 포함된 function 으로 전달받은 integer 혹은 long integer 자료형의 값을 앞에 0b가 포함됨 이진수(binary) 문자열로 돌려줍니다. 출처: https://technote.kr/242 [TechNote.kr] 풀이방법 1. python의 str함수를 이용해 진법 변환후 17을 곱합니다. 2. bin함수를 이용해 10진법을 2번법으로 변환한 수를 출력합니다. Code n = int(i..
(C++) - 백준(BOJ) 9093번 : 단어 뒤집기 답 www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 문자열을 처리한 후 답을 출력하는 간단한 문제였습니다. 풀이방법 cin의 입력버퍼에는 정수 t와 \n이 들어갑니다. 이는 없어지지 않습니다. getline()에서 인자입력을 \n(default)으로 구분하기 때문에 cin의 입력버퍼를 비워줘야 됩니다. 따라서 cin.ignore()를 사용해 입력버퍼를 비워줘야 합니다. 1. test case 변수인 t를 입력받고 cin의 buffer를 비워준 뒤 한줄로 ..
(C++) - 백준(BOJ) 18312번 : 시각 답 www.acmicpc.net/problem/18312 18312번: 시각 정수 N과 K가 입력되었을 때 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 K가 하나라도 포함되는 모든 시각을 세는 프로그램을 작성하시오. 시각을 셀 때는 디지털 시계를 기준으로, www.acmicpc.net 간단한 문자열 처리(시간) 문제였습니다. 풀이방법 1. 한계시간 (n시 59분 59초)을 초로 환산한 범위까지 loop를 돌립니다. 2. 하나의 초로 된 한계시간을 다시 00(시)00(분)00(초)의 문자열 형태로 환산합니다. 3. k를 문자열로 환산한 뒤 환산된 한계시간 중 있는 문자열인지 확인해줍니다. 찾았으면 answer++ 4. answer를 출력합니다. Code #include using nam..
(Python) - 백준(BOJ) 5052번 : 전화번호 목록 답 www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 �� www.acmicpc.net 문자열을 다루는 문제였습니다. 풀이방법 문자열을 사전순으로 정렬한 후 i+1번쨰에 있는 문자열에서 i가 있는 것을 확인만 한다면 O(n)만에 일관성 여부를 검사할 수 있습니다. 마지막으로 접두사의 의미를 정확히 알아야합니다. 만약 전화번호 목록에 211, 11211 이런식으로 있다면 11211에 211이 포함이 되어있음에도 접두사가 아니므로 일관성이 있습니다. YES를 출력해야하나 ..
(Javascript) - 백준(BOJ) 11816번 : 8진수, 10진수, 16진수 답 www.acmicpc.net/problem/11816 11816번: 8진수, 10진수, 16진수 첫째 줄에 X가 주어진다. X는 10진수로 바꿨을 때, 1,000,000보다 작거나 같은 자연수이다. 16진수인 경우 알파벳은 소문자로만 이루어져 있다. www.acmicpc.net 문자열을 다루어 8, 10, 16진수로 되어있는 문자열을 10진수로 바꾸어 출력하는 문제였습니다. 풀이방법 1. javascript언어가 굉장히 간편한 점들 중에는 진수변환이 내장함수를 사용하면 1줄의 code만으로 해결이 가능합니다. 2. parseInt 함수 : parseInt(string변수명, string으로 표현된 진수번호)를 통해 10진수의 number자료형으로 바꿀 수 있습니다. * Code에 사용되지는 않았으나 to..
(C++) - 백준(BOJ) 1439번 : 뒤집기 답 www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 간단한 문자열 처리 문제였습니다. 풀이방법 1. 연속하는 영역의 개수를 세었습니다. 1-1. 연속하는 '0'영역의 개수 : zeroArea변수에 저장 1-2. 연속하는 '1'영역의 개수 : oneArea변수에 저장 2. 두 영역의 개수 중 영역의 개수가 적은것을 출력했습니다. Code #include using namespace std; string s; int zeroCnt, oneCnt; int main()..
(C++) - 백준(BOJ) 5525번 : IOIOI 답 www.acmicpc.net/problem/5525 5525번: IOIOI 첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000) www.acmicpc.net 풀이방법 n이 1인 경우에 IOI는 1 IOIOI는 2 를 답으로 출력해야합니다. 따라서 OI를 한 set으로 계속 2씩 증가하며 이를 하나로 치고 개수를 세줬을때 n과 같으면 answer가 1씩 증가합니다. Code #include #include using namespace std; int n,m,ans=0; string word; //IOI 1 //IOIOI 2 //I한번나오면 n개수만큼 OI가 나올 때마다 답 1증가 int mai..
(Python) - 백준(BOJ) 1541번 : 잃어버린 괄호 답 www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 문자열을 parsing하고 수학적으로 최소값을 구하는 문제였습니다. 풀이방법 1. '-'를 기준으로 식들을 나눈다. 문제의 예제를 예시) 55-50+40 인 경우 [55,50+40]이 됩니다. 2. 처음 식 ('-'로 나눈 후 배열의 첫번째 원소)은 '+'가 포함되어 있을 수 있으니 '+'를 기준으로 split한 뒤 나온 배열의 모든 원소를 더해 처음 식의 결과 값을 구합니다. 그 후 답 변수인 ans의 ..