본문 바로가기

문자열16

백준) 1141번: 접두사 (Swift) 목차 머리말 문제 링크 1141번: 접두사 이 문제를 선택한 이유 구현 문제 연습 Swift 문자열 인덱스 접근 연습 풀이 n과 단어를 배열에 할당 첫 줄의 숫자를 정수로 변환하여 n으로 할당한다. 다음 줄부터는 n에 대한 반복문을 돌며 빈 배열에 하나하나씩 문자열을 추가한다. isPrefix 함수 우선 맨 아래 두 단어를 비교하여 한 단어가 다른 단어의 접두사인지를 판별하는 함수(isPrefix)를 만들었다. 두 단어 중 작은 값을 범위로 하여 문자열 인덱스를 접근하는데, 같은 값이면 카운트를 한다 카운트가 범위와 값이 같으면 접두사가 충족하기에 true를, 그렇지 않으면 기본값인 false를 리턴한다. 이중 반복문을 통한 인덱스 접근 두 단어를 조합하기 위해 이중 반복문으로 인덱스를 접근한다. isP.. 2023. 5. 29.
[CS50 2019] (C언어) 문자열 머리말 참고 자료 모두를 위한 컴퓨터 과학 (CS50 2019) > 2) 문자열 : 부스트코스 get_string과 string get_string 함수 스크래치의 say의 기능은 c언어의 get_string과 유사하다 string 문자열(string)은 프로그래밍에서 단어나 구절, 문장을 말하는데 숫자와는 다른 형태를 갖고 있다 값 입력 타입 명시 c언어는 변수 이름 앞에 저장하고 하는 값의 종류가 적혀야 한다. string answer = get_string("What's your name?\\n"); = 연산자 수학에서 =는 동등하다는 뜻이지만, 프로그래밍에서는 우항을 좌항에 대입(할당)하는 의미이다. 값 출력 printf 함수와 형식 지정 문자(%) 출력 함수에서 원하는 변수를 출력하려면 형식 지.. 2023. 5. 27.
[백준] (Python) A와 B 머리말 문제 링크 12904번: A와 B 이 문제를 선택한 이유 문제를 읽고 해석할 수 있는 능력(문해력) 반복문과 조건문을 적재적소에 활용하기 구현 문제 유형 연습 풀이 1) 잘못된 접근 방식 - 브루트 포스 처음에는 2가지의 연산이 존재하고 각각 결과론적으로 A를 추가하거나 B를 추가하거나 2가지이다. $n$ = (결괏값의 길이) - (초깃값의 길이)만큼의 경우의 수가 있으니 브루트 포스로 접근하면 되겠구나 싶었다. 결국 길이에 대한 2가지의 연산이므로 $2^{n}$을 생각하여 문제를 풀었다. # =================== 브루트 포스 -> 시간 초과 ===================== # S와 T 입력 input_string = input().strip() objective_string.. 2023. 5. 26.
[프로그래머스] (Swift) 크기가 작은 부분 문자열 - Lv.1 코딩테스트 연습 - 크기가 작은 부분 문자열 | 프로그래머스 스쿨 풀이 문자열을 배열로 분리 매개변수 t의 숫자를, 문자열 타입의 숫자로 하나로 분리한 배열로 변환한다 반복문에 필요한 범위와 부분문자열의 길이를 할당한다 부분문자열이 p보다 작거나 같으면 결괏값을 1 증가시킨다 코드 import Foundation func solution(_ t:String, _ p:String) -> Int { // solution("3141592", "271") // 매개변수 t의 숫자를, 문자열 타입의 숫자로 하나로 분리한 배열로 변환 let stringArray = Array(t).map { String($0) } // ["3", "1", "4", "1", "5", "9", "2"] // 결괏값을 0으로 초기화 v.. 2023. 5. 11.
[프로그래머스] (Swift) 비밀지도 (2018 카카오 1차) - Lv.1 머리말 문제 링크 이번 문제는 설명이 매우 길어서 한번에 캡처가 힘들어 링크만 첨부했다. 코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 스쿨 풀이 처음에는 Swift에서 제곱 메서드를 찾지 못해 직접 구현했다. 우선 정해진 길이의 이진법으로 변환하는 함수를 구현했다. 이진수의 길이와 정해진 길이를 고려해 "0"을 더할지 말지를 정했다. 이제는 매개변수로 주어진 배열을 1번의 함수를 이용해 이진수로 변환한다. 2번으로 구한 이진수로 서로 겹치는 과정이 필요하다. 이진수 문자열을 다시 쪼개어 각 자리를 더하여 크기에 따라 서로 다른 문자열로 변환하고 이를 연결하는 과정을 구현했다. 코드 func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {.. 2023. 5. 9.
[Swift] print 함수로 주어진 여러 아이템을 String 타입으로 표준 출력하기 들어가기 전에 포스팅 이유와 느낀 점 Slack에서 print 함수와 보간법(interpolation)에 대한 차이점의 질문이 올라 와서 나도 궁금해서 공식 문서를 찾아 보며 정리하게 되었다. 당연하게 쓰고 있는 print 함수이지만, 정작 어떻게 제대로 쓰는 줄 몰랐는데 이를 정리하면서 좀 더 깊게 알게 되었다 :) 참고 자료 print에 대한 애플 개발자 공식 문서를 참고했다. 아래에 한글로 적힌 내용은 공식 문서를 최대한 한글의 문맥에 가깝게 번역했다. print(_:separator:terminator:) | Apple Developer Documentation print 함수 정의 공식 문서 정의 Writes the textual representations of the given items i.. 2023. 5. 3.
[프로그래머스] (Swift) 시저 암호 - Lv.1 코딩테스트 연습 - 시저 암호 | 프로그래머스 스쿨 풀이 유니코드 스칼라 값과 정수 값을 오가는 것에 애를 많이 먹었다. 공식 문서를 찾아 보려 해도 키워드로 UnicodeScalar, unicodeScalar를 찾으면 문서가 너무 많이 나오고 설명이나 예시 코드가 많지 않아서 애를 많이 먹었다.🥲 결괏값을 빈 문자열로 초기화 공백인 경우 공백을 결괏값에 더하고 continue한다. 다음에는 간격을 더한 알파벳 값이 끝 값(z, Z)을 넘어 초과할 경우 이를 바꿔줘야 하는데, 이게 좀 까다롭다. 초과하지 않는 경우에는 단순히 간격을 더한 값을 결괏값에 더한다. 코드 func solution(_ s:String, _ n:Int) -> String { var result = "" // 문자열의 유니코드 스칼.. 2023. 5. 2.
[프로그래머스] (Swift) 다음 큰 숫자 - Lv.2 코딩테스트 연습 - 다음 큰 숫자 | 프로그래머스 스쿨 📌 풀이 풀이 순서 우선 주어진 매개변수를 이진수의 문자열로 변환한다. 결괏값을 n으로 초기화한다. 십진수를 이진수로 변환하여 1의 개수를 세는 함수를 만든다 먼저 결괏값을 1 증가시켜 다음 수로 만든다. 기존의 n 값과 4번의 결괏값으로 3번의 함수를 써서 개수가 같을 때까지 무한 루프를 반복한다. 5번에서 탈출한 결괏값을 출력한다. 예외 조건 위의 풀이 순서로 하니 테스트 케이스 딱 하나가 시간 초과가 떴다. 아니 무슨... 왜... 혹시나 예제의 데이터처럼 이진수의 숫자가 모두 1인 수는 다음 숫자로 변환하는데 시간이 많이 걸릴까하는 생각이 들었다. 이진수로 변환했을 때 숫자가 모두 1인 예외 조건 맨 왼쪽의 1을 기준으로 바로 오른쪽에 0을 .. 2023. 5. 1.
[프로그래머스] (Swift) 이진 변환 반복하기 - Lv.2 📌 문제 코딩테스트 연습 - 이진 변환 반복하기 | 프로그래머스 스쿨 📌 풀이 (1) 문자열에서 특정 문자 제거 - filter 메서드 filter(_:) | Apple Developer Documentation filter와 클로저를 활용하여 "0"만 제거할 수 있도록 했다. var binaryString = "0101001011" // "110010101001" binaryString.filter { $0 != "0"} // "111111" (2) 이진법 변환 - radix 이니셜라이저 init(_:radix:) | Apple Developer Documentation 형 변환 메서드 String()에 radix 이니셜라이저를 넣어 해당 진법에 맞게 반환할 수 있도록 했다. String(4, radi.. 2023. 4. 28.
[Swift] (알다가도 모를) 문자열의 접근 문자열에 대한 알고리즘 문제를 Swift로 풀어보면서 Swift에서 문자열의 접근이 되게 까다롭다는 생각이 들었다. Python에서는 문자열도 배열처럼 대괄호를 통한 인덱스 접근이 곧바로 되지만, Swift는 그렇지 않기 때문이다. 따라서 다시 문자열 접근을 하는 상황이 생겼을 때 처음보다 덜 헤매기 위해 이번 포스팅을 쓰게 되었다. 문자열 접근에 대해 복습도 할 겸 이를 정리하고 싶었다. 📌 Swift에서 배열과 문자열의 인덱스 접근 인덱스 접근의 차이점 배열에서는 대괄호[]를 사용하여 인덱스 접근이 손쉽게 가능하다. 이에 반해 문자열은 .index를 메서드를 쓰는 것도 모자라서, startIndex/endIndex라는 메서드와 offsetBy라는 매개변수 이름까지 쓰면서 접근해야 한다. 이 뭔… 예시.. 2023. 4. 25.
반응형