본문 바로가기

ALGORITHM/문자열

(7)
[Swift] 프로그래머스 Lv1. 신규 아이디 추천 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 정규식으로 풀어보려했지만 그냥 구현하고 싶어 구현 하다가? filter 에 조건을 여러개 넣었더니 시간안에 타입체크 할 수 없다고 쪼개보라고 에러가 발생했다. ID = ID.filter { ("a"
[Swift] LeetCode: Longest Common Prefix (문자열) https://leetcode.com/problems/longest-common-prefix/submissions/ Longest Common Prefix - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com XCode 없이 풀다가 별 문법 틀린 것 없이 한번에 success 가 떠서 대박! 했던 문제 String index 에 조금 적응한 기분 갬덩 ㅠ...ㅠ 문제 문제 제목 그대로 모든 문자열의 가장 긴 Prefix 접두사를 구하는 문제 생각 주어진 String..
[Swift] LeetCode: Roman to Integer (문자열) https://leetcode.com/problems/roman-to-integer/ Roman to Integer - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음 문제를 풀었을 때 dictionary로 돌면서 미리 넣어둔 symbol값을 숫자값 + " " 로 바꿔주고 split으로 단어를 나눠서 모두 더하도록 했다. XIV -> 10 4 -> 10 + 4 = 14 간과하고 있었던 사실은 dictionary에 순서가 없다는 것이었다. 내가 짠 코드는 IV..
[Swift] 2941 크로아티아 알파벳 (replacingOccurrences 함수) https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net replacingOccurrences() 함수를 사용하였습니다. String 문서에는 없던 함수인데 NSString 에 존재하는 함수였습니다. https://developer.apple.com/documentation/foundation/nsstring/1412937-replacingoccurrences 정의를 보면 func replacingOccurrence..
[Swift] 2779 블라인드 (문자열) https://www.acmicpc.net/problem/2799 2799번: 블라인드 첫째 줄에 M과 N이 공백으로 구분해서 주어진다. (1 ≤ M, N ≤ 100) 다음 줄에는 현재 건너편 아파트의 상태가 주어진다. 모든 창문은 문제 설명에 나온 것 처럼 4*4 그리드로 주어진다. 또, 창문과 www.acmicpc.net 예전에는 문제를 풀다가 굳이 Swift 로 풀어야할까 라는 생각을 많이 했었는데 요즘에는 굳이 Swift 로 풀어서 언어에 더 친숙해지자는 목표로 문제를 풀고있습니다..ㅋㅋㅋ 블라인드 상태가 0개 ~ 4개 인 상태를 blidState 딕셔너리에 Dictionary 형태로 저장하였습니다. 그리고 M개의 창문 줄만큼 for문을 돌고 각 창문 줄의 창문 갯수(N개) 만큼 for문을 돌아서..
[Swift] Lv2.문자열 압축 (String.Index) https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 생각 처음에 문제를 봤을 땐 친절하게 주어진 5번째 예시 테케를 못보고 중간에도 마음대로 자를 수 있는줄 알고 이게 Lv2..? 하고 절망했는데.. 문제를 잘못 생각했었습니다.. 처음부터 length 씩 자르는게 정해져있었습니다. aabab 를 2개씩 자른다고 하면 [a] [ab] [ab] 이렇게 자를 수는 없고, 무조건 [aa] [ba] [b] 이렇게 ..
[JAVA] 16172 나는 친구가 적다 (Large) (KMP 알고리즘) https://www.acmicpc.net/problem/16172 16172번: 나는 친구가 적다 (Large) 첫 번째 줄에는 알파벳 소문자, 대문자, 숫자로 이루어진 문자열 S가 주어진다. (1 ≤ |S| ≤ 200,000) 두 번째 줄에는 성민이가 찾고자 하는 알파벳 소문자, 대문자로만 이루어진 키워드 문자열 K가 www.acmicpc.net KMP 알고리즘을 사용하여 푸는 문제이다. 아래는 기억하기 위한 주저리주저리 1. pi 배열을 구하는 방법과 KMP 를 구하는 방법은 동일하다. - pi 는 비교할 배열의 앞뒤를 구분 - KMP 는 비교할 배열과 비교되는 배열 2. pi 배열은 i=1, j=0 부터 시작 (j 가 앞부분) KMP는 i=0, j=0 으로 처음부터 비교 메모리 초과가 정말 많이 ..