function solution(s) {
var answer = '';
if (s.length % 2 === 1) {
answer = s[s.length/2 - 0.5]
} else {
answer = s[s.length/ 2 - 1] + s[s.length / 2]
}
return answer;
}
우선 홀수인지 짝수인지를 조건문으로 만들고
홀수라면 s의 길이를 2로 나눠주고 거기서 0.5를 뺐다. 그 이유는 예를 들어 'abced'일 경우 length는 5가 나온다. 거기서 2로 나누면 2.5가 나오고 0.5를 빼주면 2가 나온다. 여기서 index의 경우 2는 c로 출력된다. (index는 0부터 시작하니깐)
짝수라면 'qwer'일 때 length는 4 여기서 2로 나누면 2, index의 2는 e가 출력된다. 근데 짝수 일 경우는 가운데 두 글자를 반환하라고 했으니 e의 앞에 있는 w도 함께 출력돼야 해서 length/2에서 1을 빼준 것(index 1)을 함께 출력할 수 있게 해줬다.
별찍기는 반복문을 배울 때 자주 쓰는 방법이라고 해서 반복문으로 접근해봤다.
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
let row = '*'.repeat(a)
for (let i = 0; i<b; i++) {
console.log(row);
}
});
여기서 a는 가로 b는 세로를 의미한다
row라는 변수를 설정하고 a만큼 '*'
를 반복해야하는데 repeat()메소드를 사용해서 a만큼 '*'
를 반복하는 코드를 작성했다.
그리고 b만큼 row를 반복한다는 반복문을 작성했다.
다른 사람들의 풀이를 확인해보면
console.log((('*').repeat(a)+`\n`).repeat(b))
해석해보자면 '*'를 a만큼 반복하고 \n
을 활용해서 줄바꿈을 해주는데 그걸 또 b만큼을 반복해준다.
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
let result = "";
for (let i = 0; i < b; i++) {
for (let j = 0; j < a; j++) {
result += '*';
}
result += '\n'
}
console.log(result);
});
또 다른 풀이법은 세로줄 반복문 안에 가로줄 반복문을 넣고 결과값에 \n
을 넣어준다.
function solution(num) {
var answer = '';
if (num % 2 === 0) {
answer = 'Even'
} else {
answer = 'Odd'
}
return answer;
}
간단하게 해결할 수 있는 문제!
문제를 풀때 뭔가 반복문을 쓰면서 더한다고 생각하기는 했는데 좀 막막했다
일단 이 문제를 처음 검색해봤을 땐 "가우스 공식"을 활용하는 글들이 많았다.
n(x+y)/2 가 그 공식인데 n을 풀어 x, y로만 식을 풀어봤을 때
((y-x)+1)(x+y)/2 라는 공식이 나온다고 했다.
function solution(a, b) {
var answer = 0;
return (Math.abs(b-a) + 1) * (a + b) / 2;
}
그래서 그 공식을 활용했고 a가 b보다 값이 클 경우 음수가 나올 수 있기 때문에 이 값을 절대 값으로 바꿔주는 Math.abs() 매소드도 활용했지만, 난 내가 먼저 생각했던 반복문으로 풀어보고 싶었다.
(수알못은 등차수열의 공식 이런거 잘 모르니깐..ㅇㅇ)
function solution(a, b) {
var answer = 0;
if (a <= b) {
for (let i = a; i <= b; i++) {
answer += i;
}
} else {
for (let i = b; i <= a; i++) {
answer += i
}
}
return answer;
}
막상 풀고 보니 그렇게 어렵지는 않았는데 갑자기 내가 헷갈렸던건 answer += i 이거다.. 항상 보던건데 잘 모르고 따라치기만 했던 나..
이거 이해해보려고 혼자 공책에 계속 더하기 해봤다. 내가 이해한 바로는 i만큼 i를 계속 더해주는 것!
예를들어
for (let i = a; i <= b; i++) {
answer += i;
}
여기서 i가 a일때 b만큼 i를 더해줭~
<=
는 a와 b가 같을 경우가 있어서 써주는 수식이라고 생각했는데 아닌가..?
일반적으로 변수를 선언을 하는게 기본이라고 한다.
그 때 문자열은let answer = '';
숫자일 때는
let answer = 0;