모기때문에 5시에 기상
모기 잡다가 6시 20분에 운동
8시 30분 아침식사
9시 게더 입장
오늘부터 알고리즘 공부가 시작된다.
새로운 팀에 배정되었고 달리기반과 걷기반으로 나뉘어 공부를 진행하게 되었다.
일단 1~4 알고리즘 문제를 푼뒤 만나서 코드리뷰하며 코드를 공유하기로 하였고,
그 이후에는 5~8까지 풀고 코드리뷰를 하고 하루를 마무리하기로 하였다.
1.직사각형 별찍기
- 문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.- 제한 조건
n과 m은 각각 1000 이하인 자연수입니다.
예시- 입력
5 3- 출력
★★★★★
★★★★★
★★★★★
내가 쓴 코드
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);
});
- 문제 설명
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.- 제한 조건
-num은 int 범위의 정수입니다.
-0은 짝수입니다.- 입출력 예
num return
3 "Odd"
4 "Even"
내가 쓴 코드
function solution(num) {
var answer = '';
if( num % 2 == 0){
answer = "Even";
}else{
answer = "Odd"
}
return answer;
}
- 문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.- 제한사항
s는 길이가 1 이상, 100이하인 스트링입니다.- 입출력 예
s return
"abcde" "c"
"qwer" "we"
내가 쓴 코드
function solution(s) {
var answer = '';
if(s.length % 2 == 0){
answer = s[s.length/2-1]+s[s.length/2];
}else{
answer = s[s.length/2-0.5];
}
return answer;
}
- 문제 설명
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.- 제한 조건
-a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
-a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
-a와 b의 대소관계는 정해져있지 않습니다.- 입출력 예
a b return
3 5 12
3 3 3
5 3 12
내가 쓴 코드
function solution(a, b) {
var answer = 0;
for(let i = Math.min(a,b); i <= Math.max(a,b); i++){
answer += i;
}
return answer;
}
- 문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.- 제한 조건
s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다.- 입출력 예
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
내가 쓴 코드
function solution(s) {
return Number(s);
}
- 문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.- 제한사항
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 수 ≤ 9
numbers의 모든 수는 서로 다릅니다.- 입출력 예
numbers result
[1,2,3,4,6,7,8,0] 14
[5,8,4,0,6,7,9] 6- 입출력 예 설명
- 입출력 예 #1
5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.- 입출력 예 #2
1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
내가 쓴 코드
function solution(numbers) {
let answer = 0;
for(let i = 0; i <=9; i++){
answer += i;
} for(let number of numbers){
answer -= number;
}
return answer;
}
- 문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.- 제한사항
absolutes의 길이는 1 이상 1,000 이하입니다.
absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
signs의 길이는 absolutes의 길이와 같습니다.
signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.- 입출력 예
absolutes signs result
[4,7,12][true,false,true] 9
[1,2,3][false,false,true] 0- 입출력 예 설명
- 입출력 예 #1
signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
따라서 세 수의 합인 9를 return 해야 합니다.- 입출력 예 #2
signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
따라서 세 수의 합인 0을 return 해야 합니다.
내가 쓴 코드
function solution(absolutes, signs) {
var answer = 0;
for(let i = 0; i < absolutes.length; i++){ // absolutes의 길이는 0,1,2
if(signs[i] == true){ // signs 배열 t,f,t 이므로 0,1,2
answer += absolutes[i]; // signs true일 경우에 answer = 0 값에 + absolutes의 배열의 첫 번째
}else{ // 4가 들어간다. 4는 true이므로 answer = 4가 되고 두번째 else에서
answer -= absolutes[i]; // true가 아닐경우에는 answer = 4 값에서 absolutes의 두번째 배열인
} // 7이 flase 값으로 들어간다 그러므로 4-7이되고 answer값은 -3이 된다.
} // 마지막으로 3번째 배열 14는 true 이므로 answer = -3에 14를 더하게
return answer; // 되고 9가 나오게 된다.
}
- 문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.- 제한사항
arr은 길이 1 이상, 100 이하인 배열입니다.
arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.- 입출력 예
arr return
[1,2,3,4] 2.5
[5,5] 5
내가 쓴 코드
function solution(arr) {
var answer = 0;
for(let i = 0; i<arr.length;i++){
answer += arr[i];
}
return answer = answer/arr.length;
}