문제1
정수로 이루어진 문자열 n_str이 주어질 때,
n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요.
문제2
어떤 문자열 A가 다른 문자열 B안에 속하면 A를 B의 부분 문자열이라고 합니다.
예를 들어 문자열 "abc"는 문자열 "aabcc"의 부분 문자열입니다.
문자열 str1과 str2가 주어질 때, str1이 str2의 부분 문자열이라면 1을 부분 문자열이 아니라면 0을 return하도록 solution 함수를 완성해주세요.
문제3
n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때,
arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i]
문제4
정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요.
arr[i][j] (0 ≤ i, j < n)의 값은 i = j라면 1, 아니라면 0입니다.
문제5
부분 문자열이란 문자열에서 연속된 일부분에 해당하는 문자열을 의미합니다.
예를 들어, 문자열 "ana", "ban", "anana", "banana", "n"는 모두
문자열 "banana"의 부분 문자열이지만,
"aaa", "bnana", "wxyz"는 모두 "banana"의 부분 문자열이 아닙니다.
문자열 my_string과 target이 매개변수로 주어질 때,
target이 문자열 my_string의 부분 문자열이라면 1을, 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
🕹️ 문제를 풀기위해 알면 좋을 것
- String.replace(바꿀 대상, 바꿀 문자열)
- String.includes()
includes는 string, array 둘다 있다.
매개변수를 요소로 갖고 있는지 여부에 따라 true / false를 반환한다
문제 1
첫번째 시도
내가 처음 생각한건 연속하는 00 을 a로 바꾼다음에 그 인덱스값을 기반으로 계산하는거였다.
function solution(n_str) {
let temp = n_str.replace("00" , "a")
const lastA = temp.lastIndexOf("a")
let answer = ''
if(lastA === -1){
return n_str
}else if(n_str[lastA+1] !== 0){
return n_str.slice(lastA+1)
}
}
내가 잘못 생각한게 replace에 단순히 저렇게 값을 넣으면 처음만나는 00 만 a로 바꿔준다
내가 생각한 의도는, 000 => a0, 0000 => aa 였는데 코드를 실행하면
처음만나는000 만 a0, 0000 => a00 이렇게 바뀐다.
전체 문자열에 대해 이렇게 적용하려면 글로벌 조건을 줘야한다
n_str.replace(/00/g, "a")
이렇게 해야 0000 => aa로 바뀐다.
근데 이렇게 조건을 줄 수 있다면 한줄로 완성된다...
1번 두번째 답
function solution(n_str) {
return n_str.replace(/^0+/g, "")
}
조건식
^ : 문자열 시작부분
0+ : 하나 이상의 0
/g : 글로벌, 문자열 전체를 대상으로 훑는다
+) ^ 조건
문자열 맨앞에서부터! 이기 때문에
000123 -> 123
100023 -> 100023
이렇게 중간에 있는건 안바뀐다
문제2
function solution(str1, str2) {
let isIn = str2.includes(str1)
if(isIn){
return 1
}else {
return 0
}
}
** includes의 반환값이 인덱스값 / -1인줄 착각했다. T/F이다 주의하자
문제3
첫번째 시도
function solution(arr) {
let answer = -1
for(let i=0; i < arr.length; i++){
for(let j=0; j < arr.length; j++){
if(arr[i][j] == arr[j][i]){
answer =1
}else{
answer = 0
}
}
}
return answer
}
이차원 배열을 어떻게 비교하나 했는데 입출력 예시에서 i,j를 줬다ㅋㅋㅋ
그래서 이중 for문을 사용했고 값을 비교해 answer에 1,0을 할당하도록 했는데 이렇게 했더니
테스트 케이스에서 반은 맞고 반은 틀렸다.
이유를 보니 answer에 계속 값을 할당해줘서 마지막 비교의 결과값이 담기기 때문이었다.
문제에서는 하나라도 일치 하지 않으면 0을 반환해달라고 했기 때문에 바로 리턴하도록 수정했다.
function solution(arr) {
for(let i=0; i < arr.length; i++){
for(let j=0; j < arr.length; j++){
if(arr[i][j] !== arr[j][i]){
return 0
}
}
}
return 1
}
문제4
function solution(n) {
var answer=[];
for(let i=0; i <n; i++){
for(let j=0; j<n; j++){
if(i===j){
answer[i][j] = 1
}else{
answer[i][j] =0
}
}
}
return answer;
}
처음에 이렇게 코드를 짰더니
/solution.js:7
answer[i][j] = 1
TypeError: Cannot read properties of undefined (reading '0')
이렇게 에러가 떴다.
음.... 찾아보니
answer = [] 배열이라고 초기화 해두긴했지만 얘가 이차원인지 삼차원인지 모르는 상태이기 때문에
arr[i][j] 의 값을 설정해주기 전에 인덱스를 생성해줘야한다.
수정한 답
function solution(n) {
var answer=[];
for(let i=0; i <n; i++){
answer[i] = [];
for(let j=0; j<n; j++){
if(i===j){
answer[i][j] = 1
}else{
answer[i][j] =0
}
}
}
return answer;
}
문제5
function solution(my_string, target) {
return my_string.includes(target) ? 1 : 0
}
.includes() 의 반환 값은 T/F!!!!
'JS 코테' 카테고리의 다른 글
<Javascript-CT> 기초 DAY 25 (0) | 2025.05.12 |
---|---|
<Javascript-CT> 기초 DAY 23 (1) | 2025.05.11 |
<Javascript-CT> 기초 DAY 21 (0) | 2025.05.09 |
<Javascript-CT> 기초 DAY 19 (0) | 2025.05.08 |
<Javascript-CT> 기초 DAY 18 (0) | 2025.05.07 |