Front-End
프로그래머스 기초트레이닝 17일차 본문
가족이랑 해외여행을 갔다오느라, 포스팅이 늦었습니다.
빠르게 다시 공부해서 올리도록 하겠습니다!
문제 84. 날짜 비교하기
문제 설명
정수 배열 date1과 date2가 주어집니다.
두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다.
각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다.
만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요.
입출력 예
date1 | date2 | result |
[2021, 12, 28] | [2021, 12, 29] | 1 |
[1024, 10, 24] | [1024, 10, 24] | 0 |
입출력 예 설명
date1이 date2보다 하루 앞서기 때문에 1을 return 합니다.
date1과 date2는 날짜가 서로 같으므로 date1이 더 앞서는 날짜가 아닙니다. 따라서 0을 return 합니다.
저의 풀이!
메모
new Date 인자에 배열로된 날짜를 넣어도 인식해서 날짜형식으로 읽어준다.
그래서 따로 년 월 일을 나눠서 올려두지 않아도 저대로 바로 넣어도 날짜를 확인할 수 있다.
문제 85. 이차원 배열 대각선 순회하기
문제 설명
2차원 정수 배열 board와 정수 k가 주어집니다.
i + j <= k를 만족하는 모든 (i, j)에 대한 board[i][j]의 합을 return 하는 solution 함수를 완성해 주세요.
입출력 예
board | k | result |
[[0, 1, 2],[1, 2, 3],[2, 3, 4],[3, 4, 5]] | 2 | 8 |
입출력 예 설명

저의 풀이!
메모
이차원배열을 순회하기 위해 이중 반복문, 즉 2중 for문을 사용해서 문제를 풀었습니다.
문제 86. 수열과 구간 쿼리 1
문제 설명
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 arr[i]에 1을 더합니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
입출력 예
arr | queries | result |
[0, 1, 2, 3, 4] | [[0, 1],[1, 2],[2, 3]] | [1, 3, 4, 4, 4] |
입출력 예 설명

저의 풀이!
메모
구조분해 할당을 이용해서 queries를 변수에 담았고, 이중 반복문을 이용해서 queries의 이중배열을 순회했습니다.
원본 배열을 수정하기 보다 복사본의 배열을 만들어서 식을 성립한 후 출력되도록 코드를 작성했습니다.
문제 87. 빈 배열에 추가, 삭제하기
문제 설명
아무 원소도 들어있지 않은 빈 배열 X가 있습니다.
길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때,
flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고,
flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요.
입출력 예
arr | flag | result |
[3, 2, 4, 1, 3] | [true, false, true, false, false] | [3, 3, 3, 3, 4, 4, 4, 4] |
입출력 예 설명

저의 풀이!
메모
여기서 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, 이 부분 때문에 반복문 조건에 * 2를 적어두었습니다.
그렇게 해야 추가되는 횟수를 2배할 수 있다고 생각하고 작성했습니다.
그리고 flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는, 이 부분 때문에 이중 반복문을 벗어난
하나의 반복문 안에서만 따로 빈배열일 경우 맨 뒤 쪽을 잘라내도록 splice 함수를 사용했습니다.
문제 88. 배열 만들기
문제 설명
문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.
배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다.
이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.
입출력 예
intStrs | k | s | i | result |
["0123456789","9876543210","9999999999999"] | 50000 | 5 | 5 | [56789, 99999] |
입출력 예 설명

저의 풀이!
메모
일단 문자열을 잘라낸 것을 숫자로 변환한 후 k 보다 큰지 작은지 확인하는 조건문을 만든 다음
빈 배열의 변수를 만들어서 그곳에 담기게 식을 작성했습니다.
filter로도 풀수 있다고해서 풀어봤습니다.
일단 문자열을 자르는 부분은 map으로 문자열을 자른 후 숫자로 변환한 새로운 배열을 만들고, 그걸 filter로 돌렸습니다.
문제 89. 글자 지우기
문제 설명
문자열 my_string과 정수 배열 indices가 주어질 때,
my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
입출력 예
my_string | indices | result |
"apporoograpemmemprs" | [1, 16, 6, 15, 0, 10, 11, 3] | "programmers" |
입출력 예 설명

저의 풀이!
메모
저는 일단 my_string을 배열로 변환한 후 filter 를 사용해서 포함되지않은 인덱스의 i 만 빼서 배열을 만든 후 join으로 합쳤습니다.
하지만 굳이 join을 쓰지않고도 반복문으로 풀 수 있을 것이라고 해서 풀어봤습니다.
오호~~
문제 90. 문자열 뒤집기
문제 설명
문자열 my_string과 정수 s, e가 매개변수로 주어질 때,
my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.
입출력 예
my_string | s | e | result |
"Progra21Sremm3" | 6 | 12 | "ProgrammerS123" |
"Stanley1yelnatS" | 4 | 10 | "Stanley1yelnatS" |
입출력 예 설명
예제 1번의 my_string에서 인덱스 6부터 인덱스 12까지를 뒤집은 문자열은 "ProgrammerS123"이므로 "ProgrammerS123"를 return 합니다.
예제 2번의 my_string에서 인덱스 4부터 인덱스 10까지를 뒤집으면 원래 문자열과 같은 "Stanley1yelnatS"이므로 "Stanley1yelnatS"를 return 합니다.
저의 풀이!
메모
일단 배열로 변경 한 후 slice로 뒤집어야하는 부분을 뒤집고 join으로 글자로 다시 변경해두고 변수에 담아뒀습니다.
그리고 replace로 글자를 변경했습니다.
'알고리즘' 카테고리의 다른 글
프로그래머스 기초트레이닝 19일차 (4) | 2023.10.19 |
---|---|
프로그래머스 기초트레이닝 18일차 (4) | 2023.10.10 |
프로그래머스 기초트레이닝 16일차 (0) | 2023.10.03 |
프로그래머스 기초트레이닝 15일차 (1) | 2023.09.12 |
== 추가적인 공부 == (1) | 2023.09.11 |