# String

[String,Queue문제] LEETCODE 57. Insert Interval
문제 https://leetcode.com/problems/simplify-path/ 문제풀이 1.입력 경로를 데크(queue)로 변환하여 문자열을 하나씩 처리한다.(파이선 Split 함수를 사용했으면 이렇게 할 필요가 없이 효율적으로 처리했을 듯하다) 2.searchFile 함수를 사용하여 경로에서 다음 파일 이름을 추출하고 처리되지 않은 경로(queue)를 반환한다. 3.파일 이름이 "/.."인 경우 상위 디렉토리로 이동하고, 상위 디렉토리로 이동한 만큼 경로에서 이전 파일을 제거한다. 4.파일 이름이 "/." 또는 "/"인 경우 아무 작업도 수행하지 않고 무시한다. 5.그 외의 경우 파일 이름을 경로에 추가하고 FileMemory에 저장한다. 모든 파일을 처리한 후, 최종

java 형 변환
String형 -> 숫자형(int, double, float, long, short) 숫자형(int, double, float, long, short) -> String형
[프로그래머스 / C++] 문자열의 앞의 n글자
문제 문자열의 앞의 n글자 : 문제 링크 문제 분석 문자열 mystring과 정수 n이 매개변수로 주어질 때, mystring의 앞의 n글자로 이루어진 문자열을 return substr() 함수를 사용하여 인수에 시작인덱스와 문자열 길이를 넣는데, my_string 문자열중 가장 첫번째부터 n글자 만큼 return 해야 하므로 0과n으로 설정하여 answer에 저장. 저장된 answer 문자열을 return > substr() 함수 사용법 substr(시작인덱스, 문자열 길이) => 시작인덱스 부터 주어진 문자열 길이만큼 추출 substr(시작인덱스) => 시작인덱스 부터 문자열 끝까지 추출 풀이

JAVA1(1~6) / 생활코딩
이클립스 기본 설정 자동완성기능 윈도우→환경설정→자바→편집기→활성화 트리거에 아래 내용 입력→저장 https://velog.io/@zz1996zz/Eclipse이클립스-자동완성-설정하기 .qwertyuioplkjhgfdsazxcvbnm_QWERTYUIOPLKJHGFDSAZXCVBNM https://tamcode.tistory.com/50 .abcdefghijklmnopqrstuvwxyz 한글 패치 https://eclipse.dev/babel/downloads.php visual studio 팁 ctrl
[멋사 알고리즘 스터디] 23.09.23 - String 문자열
String 문자열 🗣️ >프로그래밍 언어에서 문자열이라는 데이터를 저장하기 위해 String이라는 데이터 타입을 사용한다. 다른 언어와는 달리 Java에서의 String은 특별한 자료형으로 취급되어 여러 유의사항들이 존재한다. 우선 String에 대해 알아보자! Java String의 특징 String은 객체 int , char -> 기본형 변수 String -> 참조형 변수 즉, 스택 영역이 아닌 객체와 같이 힙에서 문자열 데이터가 생성되고 다뤄진다. String은 변경할 수 없다. ` a는 변경된 것이 아닌 새로운 힙 메모리에 "Hello World"를 따로 만든다. String을 선언하는 방법 ` Java String 메소드 > 1. equals() 두 개의 문자열이 동일한 값을 가지고 있는지 비교 ` 참고로 '==' 연산자는
문자열 겹쳐쓰기
문제 설명 문자열 mystring, overwritestring과 정수 s가 주어집니다. 문자열 mystring의 인덱스 s부터 overwritestring의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요. 제한사항 mystring와 overwritestring은 숫자와 알파벳으로 이루어져 있습니다. 1 ≤ overwritestring의 길이 ≤ mystring의 길이 ≤ 1,000 0 ≤ s ≤ mystring의 길이 - overwritestring의 길이 입출력 예 mystring overwritestring s result "He11oWor1d" "lloWorl" 2 "HelloWorld" "Program29b8UYP" "merS123" 7 "ProgrammerS123" 입출력 예 설명 입출력 예 #1 예제 1번의 my_string에서 인덱스 2부터
LeetCode - 2103. Rings and Rods
Solution Explanation > 문제의 태그로 적혀있는 Hash Table을 이용해서 풀었다. 문자열 rings를 for문을 이용해서 순회하면서 0부터 9까지의 rod별 링을 객체 hash에 기록하였다. 그리고 hash에 for...in문을 이용해서 'R', 'G', 'B' 세 가지 색상을 모두 갖고 있는지 확인하였다. Others > Hash Table을 사용하지않고 해결하는 방법도 있다. rings를 순회하는 것이 아니라 0부터 9까지의 rod들을 순회하는 것이다. 특정 rod에서 rings에 B(rod), G(rod), R(rod)가 존재하는지 확인하는 것이다. 개수는 중요하지않고 모든 색상이 존재하는지만 중요하기 때문이다.
LeetCode - 2697. Lexicographically Smallest Palindrome
Solution Explanation > Two Pointers를 이용하여 쉽게 해결하였다. 먼저 변경이 가능하다록 하기 위하여 문자열 s를 배열로 변환하였다. 그리고 두 포인터 i와 j를 설정하였다. i는 첫 번째 인덱스부터 접근하는 포인터이고 j는 마지막 인덱스부터 거꾸로 접근하는 포인터이다. charCodeAt 메소드를 사용하여 두 문자열의 알파벳 순서를 비교한 후 상황에 맞게 바꿔주면 된다.
백준 17609 회문 (C++)
17609번: 회문 투 포인터를 이용한 문제이다. 입력받은 문자열을 반복문을 돌면서 회문인지 확인을 해준다. 만약 와 를 비교하고 만약 같지 않을 경우 을 했을 때와 을 했을 때 둘 중 회문이 있는지 비교를 해주고 만약 있다면 1을 리턴해준다. 없다면 2를 리턴해주고 모두 같을 경우 0을 리턴을 해주고 이를 출력해준다. 생각보다 어려웠던 문제였다. 단순히 스택 형식으로 접근했다가 로직에 문제가 생겨 많이 해맸었다. 투 포인터에 대해 잘 기억해두자.

[Java] String, StringBuilder, StringBuffer
자바에서 문자열을 저장하고 관리할 수 있는 클래스는 대표적으로 3개가있다. **String, StringBuilder, StringBuffer 왜 굳이 3개나 있을까? 각 클래스의 차이가 뭐지??** 알아보자! 왜 구분해야 되는거지?? 연산 횟수가 적다면 사실 어떤걸 써도 관계가 없다. 하지만 연산 횟수가 많아지거나, 멀티쓰레드, Race condition 등의 상황이 자주 일어나는 코드라면?? > 💡 Race condition 공유 자원에 대해 여러 프로세스가 동시에 접근을 시도할 때, 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태 그렇다면 각 클래스의 특징을 알고 구분해서 사용할 필요가 있다. String vs StringBuffer, StringBuilder 먼저 3가지의 클래스는 불변(immutable)의 속성을 가지냐 안가지냐에 따라 구분할 수 있다. String 은 불변(immutable)의 속성을
(Swift) LeetCode 125. Valid Palindrome
지난 번 포스팅까지 프로그래머스에 있는 문제를 풀어보았는데요. 이번 포스팅 부터는 리트코드의 문제들을 풀어보도록 하겠습니다. 문제 링크 문제 풀이 아이디어 아주 간단한 유형의 문제입니다. 다만 주어진 문자열을 바로 뒤집어서 비교하면 안되고 약간에 가공을 거쳐야 합니다. 일단 빈 문자열 “ ”을 제거해야 합니다. 그리고 알파벳과 숫자가 아닌 것을 제거합니다. 마지막으로 대소문자를 가리지 않으므로 모두 소문자로 바꿉니다. 그리고 나서 문자열을 뒤집어서 비교하면 됩니다. 그냥 문자열에서 위 작업들을 진행하면 Swift에서는 굉장히 번거롭고 무거운 작업이 됩니다. 따라서 [Character]로 바꿔준 이후에 진행하도록 하겠습니다. 코드

[프로그래머스] 숫자 문자열과 영단어
1. 문제 프로그래머스 - 숫자 문자열과 영단어 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어졌을 때, s가 의미하는 원래 숫자를 반환하는 문제("one4seveneight" -> 1478) 숫자의 일부 자릿수를 영단어로 바꾸는 예시 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 2. 코드 영단어와 그에 해당하는 숫자를 저장한 Map을 활용하는 방식 s에서 숫자와 영단어를 추출하여, 숫자는 그대로 result에 붙이고, 영단어는 숫자로 변환하여 붙이는 방식으로 해결 3. 개선 문자열 배열과 인덱스를 활용하는 방식 조금 덜 직관적이지만 더 간결하다.
LeetCode - 1021. Remove Outermost Parentheses
Solution Explanation > stack을 이용하면 크게 어렵지 않게 해결할 수 있다. 문제의 설명 중에 primitive란 빈 문자열이 아니면서, 분열시킬 수 없는 괄호를 뜻한다. 예를 들어, (())()()은 (()) + () + ()로 나눌 수 있기 때문에 primitive하지 않다. 여기서 나누어진 (()), (), ()은 더 이상 분열시킬 수 없기 때문에 prmitive하다. 최종적으로 문제에서 요구하는 사항은 아래와 같다. 주어진 문자열을 분열시킨 후 각각의 primitive한 괄호의 가장 바깥쪽의 괄호를 제거한 후 합친 결과를 리턴하라 > stack을 이용하여 분열시키는 방법은 stack의 길이를 이용하는 것이다. 먼저 열린 괄호(()의 경우 stack의 길이가 1이라는 것은 최외곽의 괄호가 열려있다는 뜻이다. 즉, 우리가 제거해야할 괄호이다. 그리고 1보다 크다는 것은 중첩된 괄호라는 것이다. 따라서 이 경우에만 결과
String vs StringBuffer vs StringBuilder
String/ StringBuffer/ StringBuilder 문자열을 다루는 자료형 클래스 각 사용 목적에 따라 쓰임새가 다름 StringBuffer & StringBuilder 문자열 연산(추가 or 변경) 시 사용되는 자료형 String 도 + 혹은 concat() 을 통해 문자열 추가 가능 하지만, 여기서는 String 인스턴스가 새롭게 생성되며, 공간 낭비와 속도 저하 발생 이를 해결하기 위해 제공하는 자료형 특징 기본 값은 16개 문자 저장 가능하며 생성자를 통해 변경 가능 연산 시, 자동으로 추가 할당 다양한 내장 메서드 제공 String vs StringBuffer & StringBuilder 문자열 변경 여부 String String은 불변 자료형이며, 이로 인해 연산 시 속도 저하가 발생 연산에 대해서 메모리 내에 새로운 공간을 할당하여 새로 저장
LeetCode - 1614. Maximum Nesting Depth of the Parentheses
Solution Explanation > stack과 최대 깊이를 기록하는 변수 depth를 이용해서 해결했다. (일 경우, 스택에 추가한 후 스택의 길이와 depth를 비교한다. 현재 스택에 쌓여있는 (의 개수가 depth보다 클 경우 depth의 값을 재할당한다. 반대로 )일 경우, 괄호가 닫힌 것이기 때문에 스택에서 (를 제거한다.
LeetCode - 2315. Count Asterisks
Solution Explanation > 문제의 요구사항 중에서 가장 중요한 점은 |은 항상 짝(짝수개)으로 존재한다는 것이다. 그래서 괄호의 개념을 이용해서 접근했다. |가 열리게되면 fasle가 되고 닫히게되면 true가 된다는 설정을 적용하였다. 즉, |을 만나게되면 상태가 바뀌게된다. |가 열린 상태인 false인 경우에는 *를 카운트하지 않고 닫힌 상태인 true인 경우에만 *를 카운트한다.
[프로그래머스 / C++] 문자열의 뒤의 n글자
문제 문자열의 뒤의 n글자 : 문제 링크 문제 분석 문자열 mystring과 정수 n이 매개변수로 주어질 때, mystring의 뒤의 n글자로 이루어진 문자열을 return substr() 함수를 사용하여 인수에 시작인덱스를 넣는데, mystring 문자열중 가장 마지막 위치인 mystring.size()에서 n글자 만큼 return 해야 하므로 n을 빼서 answer에 저장. 저장된 answer 문자열을 return > substr() 함수 사용법 substr(시작인덱스, 문자열 길이) => 시작인덱스 부터 주어진 문자열 길이만큼 추출 substr(시작인덱스) => 시작인덱스 부터 문자열 끝까지 추출 풀이
[프로그래머스 / C++] 대문자로 바꾸기
문제 대문자로 바꾸기 : 문제 링크 문제 분석 알파벳으로 이루어진 문자열 myString이 주어진다. 모든 알파벳을 대문자로 변환하여 return 대소문자 변환을 위해 transform() 함수를 사용하므로 헤더를 include. transform() 함수의 ::toupper 옵션을 통해 myString 문자열을 모두 대문자로 변환 후 return > transform() 함수 사용법 OutputIt transform(InputIt first1, InputIt last1, OutputIt dfirst, UnaryOperation unaryop); 1 : 입력한 변수의 first 위치 2 : 입력한 변수의 last 위치까지 3 : 저장할 변수의 first 위치 4 : 변환할 방
오랜만에 파싱,,
string class parsing parsing 기본1) 자주쓰는 메서드 > 1. find 찾은 단어의 index를 반환한다. substr 단어를 추출해준다. 백준 10953 백준 20291
LeetCode - 1662. Check If Two String Arrays are Equivalent
Solution Explanation > 순서대로 조합하기 때문에 join 메소드를 이용하면 간단하게 해결된다. 문자열은 원시 타입이기때문에 비교가 가능하다.