문제 설명
소문자로 된 단어(문자열)가 입력되면 그 단어의 가운데 문자를 출력하는 프로그램을 작성하세 요. 단 단어의 길이가 짝수일 경우 가운데 2개의 문자를 출력합니다.
▣ 입력설명
첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.
▣ 출력설명
첫 줄에 가운데 문자를 출력합니다.
input | output |
---|---|
study | u |
good | oo |
풀이
const middleText = (str) => {
let answer = '';
if (str.length % 2 === 0) { // 1)
let a = str.length / 2;
answer = str[a - 1] + str[a];
} else {
answer = str[Math.floor(str.length / 2)];
}
return answer;
};
const str1 = 'study';
const str2 = 'good';
console.log(middleText(str1)); // u
console.log(middleText(str2)); // oo
✍️ solution
function solution(s) {
let answer;
let mid = Math.floor(s.length / 2);
if (s.length % 2 === 1) answer = s.substring(mid, mid + 1);
else answer = s.substring(mid - 1, mid + 1);
return answer;
}
console.log(solution('study'));
문제 설명
소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요. 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다.
▣ 입력설명
첫 줄에 문자열이 입력됩니다.
▣ 출력설명
첫 줄에 중복문자가 제거된 문자열을 출력합니다.
input | output |
---|---|
ksekkset | kset |
asdfasdfgh | asdfgh |
풀이
const RemoveDuplicate = (str) => {
let answer = '';
for (let i = 0; i < str.length; i++) {
if (i === str.indexOf(str[i])) {
answer += str[i];
}
}
return answer;
};
const str = 'ksekkset';
console.log(RemoveDuplicate(str)); // kset
for of
문을 활용하려고 했으나 이경우 i(인덱스)
를 어떻게 알아낼 수 있을지 알지 못했다. (구글링을 통해 arr.keys()를 이용, 인덱스를 알아낼 방법을 찾았으나 이 문제에서는 적합하지 않을 수 있다고 생각되었다!🧐)✍️ solution
solution;
function solution(s) {
let answer = '';
for (let i = 0; i < s.length; i++) {
if (s.indexOf(s[i]) === i) answer += s[i];
}
return answer;
}
console.log(solution('ksekkset'));
문제 설명
N개의 문자열이 입력되면 중복된 문자열은 제거하고 출력하는 프로그램을
작성하세요. 출력하는 문자열은 원래의 입력순서를 유지합니다.
▣ 입력설명
첫 줄에 자연수 N이 주어진다.(3<=N<=30) 두 번째 줄부터 N개의 문자열이
주어진다. 문자열의 길이는 100을 넘지 않습니다.
▣ 출력설명
첫 줄부터 중복이 제거된 문자열을 차례로 출력한다.
input | output |
---|---|
5 good time good time student | good time student |
풀이
const removeDuplicate = (str) => {
let answer = [];
for (let i = 0; i < str.length; i++) {
if (answer.indexOf(str[i]) === -1) {
answer.push(str[i]);
}
}
return answer;
};
const str = ['good', 'time', 'good', 'time', 'student'];
console.log(removeDuplicate(str)); // ['good', 'time', 'student']
indexOf()
를 활용, 중복되지 않은 단어만을 추가해주었다.✍️ solution
function solution(s) {
let answer;
//console.log(s.indexOf("student"));
answer = s.filter((v, i) => {
//console.log(v, i);
if (s.indexOf(v) === i) return v;
});
return answer;
}
let str = ['good', 'time', 'good', 'time', 'student'];
console.log(solution(str));
filter()
와 indexOf()
메서드를 활용한 풀이방법이다.indexOf()
메서드는 배열에서 주어진 요소의 첫번째 인덱스를 반환한다는 특징을 활용!😀문제 설명
N(1<=N<=100)개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작 성하세요.(첫 번째 수는 무조건 출력한다)
▣ 입력설명
첫 줄에 자연수 N이 주어지고, 그 다음 줄에 N개의 정수가 입력된다.
▣ 출력설명
자신의 바로 앞 수보다 큰 수만 한 줄로 출력한다.
input | output |
---|---|
6 / 7 3 9 5 6 12 | 7 9 6 12 |
2, 8, 3, 9, 4, 5, 1 | 2 8 9 5 |
풀이
const bigNum = (arr) => {
let answer = [arr[0]];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < arr[i + 1]) { // 1)
answer.push(arr[i + 1]);
}
}
return answer;
};
const arr = [7, 3, 9, 5, 6, 12];
console.log(bigNum(arr)); // [7, 9, 6, 12]
arr[i]
와 arr[i+1]
의 값을 비교했다. ✍️ solution
function solution(arr) {
let answer = [];
answer.push(arr[0]);
for (let i = 1; i < arr.length; i++) {
if (arr[i] > arr[i - 1]) answer.push(arr[i]);
}
return answer;
}
let arr = [7, 3, 9, 5, 6, 12];
console.log(solution(arr));