알고리즘
-
[프로그래머스] 카운트 다운알고리즘 노트 2023. 10. 20. 12:15
start_num부터 end_num까지 1씩 줄이며 result배열을 만들어주면 됩니다. [문제풀이] 1. IntStream의 rangeClosed()메소드를 통해 loop문을 생성합니다. 여기서 range는 마지막 값을 비포함, rangeClosed는 마지막값을 포함한다고 기억하심 편합니다. 2. boxed()를 통해 Integer형으로 변형한 뒤 Collections의 reverseOrder() 메소드로 collection을 역배열시켜줍니다. 3. 그리고 mapToInt로 int형으로 바꾼 뒤 toArray()로 배열을 리턴시켜줍니다.
-
[프로그래머스] 글자 지우기알고리즘 노트 2023. 10. 20. 11:30
my_string의 요소들 중 indices 내 요소의 자리에 위치한 글자를 지우면 되는 문제입니다. 우선 String을 String 배열로 만들고 공백으로 치환하면 쉽게 풀 수 있습니다. toCharArray()로 치환하면 char형을 사용할 수 없어 풀기 힘들어집니다. [문제풀이] 1. my_string의 split()을 활용해 String배열을 만들어줍니다. 2. indices의 요소의 값으로 split한 배열의 위치의 글자를 ""으로 지워줍니다. 3. String.join()을 통해 하나의 문자열로 합쳐서 반환해줍니다.
-
[프로그래머스] 세로 읽기알고리즘 노트 2023. 10. 19. 10:06
주어진 my_string 문자열을 m개의 문자로 묶음을 지어서 그 중 c번째의 글짜를 추출하면 result값이 나오게 됩니다. [문제풀이] 1. IntStream 클래스의 range() 함수로 loop를 구현합니다. 2. filter() 함수를 통해 m의 배수 자리를 구합니다. 3. 그렇게 구해진 l 값을 활용해 my_string의 문자열을 잘라내고, charAt을 활용해 잘란 문자열에서 원하는 문자를 가져옵니다. 4. map() 함수를 통해 char형을 String으로 바꾼 후 Collectors.joning()을 통해 문자열로 반환을 합니다.
-
[프로그래머스] 문자열 뒤집기알고리즘 노트 2023. 10. 19. 09:37
my_string에서 s부터 e까지의 문자열을 추출해 순서를 뒤집은 후 다시 원본 문자열과 합쳐주면 됩니다. 과거 문자열 뒤집기를 사용해봤기에, 그에 맞게 다시 구현을 해보았습니다. [문제풀이] 1. my_string을 char배열로 변경합니다. 2. while문을 통해 s가 e보다 작거나 같을 때 까지 수행을 반복합니다. 3. 임시 값인 temp 변수를 만들어 놓고, chars[s]를 넣고 chars[e]와 교체작업을 하는데 사용해줍니다. 4. s는 1씩 늘리고, e는 1씩 감소시킵니다. 5. 순서가 바뀐 문자 배열을 new String으로 문자열 오브젝트로 변환해 return합니다. 근데 이것보다 훨씬 더 간편한 문자열 뒤집기 방법이 있었으니..그것은 바로 StringBuilder의 reverse()..
-
[프로그래머스] 접미사인지 확인하기알고리즘 노트 2023. 10. 18. 10:49
my_string의 마지막 문자열이 is_suffix의 문자열과 동일하다면 1을, 동일하지 않다면 0을 반환하는 문제입니다. 곧 is_suffix의 길이만큼의 문자열을 my_string에서 구한 뒤 두 값을 비교하면 되겠지요? [문제풀이] 1. 우선 my_string과 is_suffix의 길이가 다르다면 애당초 조건이 성립이 되지 않기에 0을 반환합니다. 2. my_string의 is_suffix만큼의 길이를 빼면 my_string과 is_suffix는 같은 길이의 문자열이 됩니다. 그럼 이 둘이 같은지를 비교해서 같다면 1을, 다르다면 0을 반환해주면 됩니다. 다 풀었다고 생각하고 정답을 제출했습니다만, 훨씬 더 짧은 문제 풀이가 있어 공유합니다. [문제풀이] 1. String 클래스의 endsWith..
-
[프로그래머스] 접미사 배열알고리즘 노트 2023. 10. 18. 10:38
지문의 이해가 오히려 더 어려웠던 것 같습니다.. 위 내용은 결국 문자열을 하나씩 잘라 알파벳 순서대로 정렬을 해서 반환하면 되는 문제였습니다. [문제풀이] 1. IntStream의 range() 메소드로 loop문을 구현합니다. 길이는 my_string의 length()까지 입니다. 2. mapToObj() 메소드를 통해 잘라낸 String을 구합니다. 여기서 ::는 substring의 인자를 하나만 받는 메소드가 하나밖에 없을 경우 사용 가능합니다. 따라서 ::substring을 활용하면 .substring(i)로 치환되어 사용됩니다. 3. sorted() 메소드를 통해 잘라낸 문자열을 알파벳 순서로 정렬합니다. 4. toArray() 메소드를 통해 String 배열을 반환합니다. 여기서는 새로운 S..