본문 바로가기

Algorithm/String

(93)
(Javascript) - 프로그래머스(2019 KAKAO BLIND) : 오픈채팅방 답 programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr map을 이용해 풀면 되는 문제였습니다. 풀이방법 map을 이용해 key값은 id, value는 nickName으로 생각해 무조건 닉네임이 존재하는 경우에 map을 update 해주는 생각을 했습니다. 1. record를 돌며 해당 정보를 map의 set함수를 이용해 저장합니다. 2. 마지막까지 change된 nickname까지 모두 반영이 되기 때문에 갱신이 완료된 map을..
(Python) - 백준(BOJ) 12780번 : 원피스 답 www.acmicpc.net/problem/12780 12780번: 원피스 바야흐로 지금은 대해적 시대, 밀짚모자 해적단의 선장 교정이는 어린 시절 우연히 잊지 못할 한 마디를 들었다. 그것은 바로 해적 왕 골.D.상윤이 자신이 모은 모든 보물인 원피스를 위대한 항 www.acmicpc.net 간단한 문자열 세기 문제였습니다. clue = input() word = input() print(clue.count(word))
(C++) - 백준(BOJ) 12605번 : 단어순서 뒤집기 답 www.acmicpc.net/problem/12605 12605번: 단어순서 뒤집기 스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 www.acmicpc.net 간단한 문자열 처리 문제였습니다. Code #include using namespace std; int t; string getOppositeSentence(string sentence){ int size = sentence.size(); string ans = ""; string tmp = ""; vector s; for(int i = 0; i < size; i++){ tmp += sentence[i]; i..
(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..