본문 바로가기

Algorithm/String

(93)
(C++) - 백준(BOJ) 1969번 : DNA https://www.acmicpc.net/problem/1969 1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오 www.acmicpc.net 구현 문제였습니다. 풀이방법 1. 입력을 모두 받으면 N행 M열의 형태로 문자열들이 저장되게 됩니다. 2. 열 단위로 세로로 보면서 가장 많이 나왔고 그것이 여러개라면 그 중 가장 앞의 알파벳을 찾습니다. 최다 빈도의 알파벳을 출력할 문자열 정답 변수 minWord뒤에 붙여주고 최다 빈도의 알파벳을 제외한 다른 알파벳들의 빈도 수들을 모두 ans변수에 ..
(C++) - 백준(BOJ) 12904번 : A와 B https://www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 반대로 생각해야하는 문자열 처리문제였습니다. 풀이방법 A를 추가하거나 뒤지고 B를 추가하여 t를 만드는데 brute force를 생각할 수 있으나 매번 2배씩 분기되기 때문에 2의 1000(문자열 최대길이)승 정도의 시간복잡도로 시간초과가 납니다. 1. 생각전환 : 반대로 생각하면 풀립니다. t->s로 문자를 만든다고 생각해봅니다. 이를 만드는데는 2가지 조건..
(Javascript) - 프로그래머스(2019 카카오 개발자 겨울 인턴십) : 튜플 programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 문자열 처리 구현 문제였습니다. 풀이방법 1. 문자열을 정제한 뒤 만든 배열을 길이 오름차순으로 정렬합니다. 2. Map에 저장되어 있지 않은 값이 있다면 answer에 넣어줍니다. 3. answer를 반환합니다. Code function solution(s) { let answer = []; let M = new Map()..
(Javascript) - 프로그래머스(2018 KAKAO BLIND RECRUITMENT[3차]) : n진수 게임 programmers.co.kr/learn/courses/30/lessons/17687?language=javascript 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 문자열 문제였습니다. 풀이방법 1. t*m만큼 10진수 i를 n진수로 변환해 num이라는 문자열 변수에 이었습니다. 2. 튜브의 차례마다 말해야할 문자를 tmp변수에 붙인 후 t의 길이만큼 잘라줍니다. 3. 소문자라면 대문자로 바꾼뒤 정답을 반환합니다. Code //진수 수개수 참가인원 튜브순서 function solutio..
(C++) - 프로그래머스(Summer/Winter Coding(~2018)) : 영어 끝말잇기 programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr 구현문제였습니다. 풀이방법 1. 이전 단어의 끝 알파벳이 현재 단어의 처음 알파벳과 다르거나 map..
(C++) - 백준(BOJ) 1213번 : 팰린드롬 만들기 답 www.acmicpc.net/problem/1213
(C++) - 백준(BOJ) 3029번 : 경고 답 www.acmicpc.net/problem/3029 3029번: 경고 첫째 줄에 현재 시간이 hh:mm:ss 형식으로 주어진다. (시, 분, 초) hh는 0보다 크거나 같고, 23보다 작거나 같으며, 분과 초는 0보다 크거나 같고, 59보다 작거나 같다. 둘째 줄에는 나트륨을 던질 시간 www.acmicpc.net 문자열을 처리하는 문제였습니다. 풀이방법 * 정인이는 1초 ~ 24시간 사이를 기다릴 수 있습니다. 따라서 시간이 같으면 24시간을 기다려야합니다. * 시 : 분 : 초 이렇게 출력시 시간부분이 24이상의 숫자가 출력되서는 안됩니다. Code #include using namespace std; int nowTime[3], doTime[3]; int sec1,sec2,waitTime; stri..
(C++) - 백준(BOJ) 9933번 : 민균이의 비밀번호 www.acmicpc.net/problem/9933 9933번: 민균이의 비밀번호 첫째 줄에 단어의 수 N (2 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 파일에 적혀있는 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있으며, 길이는 2보다 크고 14보다 작은 www.acmicpc.net 문자열 처리 문제였습니다. 풀이방법 1. 입력 : string 1차원 배열 word를 선언한 뒤 n개의 단어를 입력받습니다. 2. 비교 : word의 단어들 중 두 쌍을 뽑아 한쪽을 뒤집어 만약 같다면 비밀번호이므로 출력한 뒤 프로그램을 종료합니다. 이 문제는 조합이 아닙니다. 즉 a,b를 비교했다고 넘어가면 안되며 b,a도 비교해 줘야 맞습니다. 한쪽만 뒤집기 때문에 다른쪽도 나중에 뒤집어..