-
항해99 알고리즘 1일 차(1)알고리즘 풀이 2021. 11. 8. 21:40
1.직사각형 별찍기
문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
제한 조건
- n과 m은 각각 1000 이하인 자연수입니다.
예시
입력
5 3
출력
*****
*****
*****
문제
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => { //입력받은 숫자를 'data에 받는다'
const n = data.split(" "); // data(입력받은 숫자)를 배열로 변경
const a = Number(n[0]), b = Number(n[1]); //a는 한줄에대한 별의 갯수, b는 몇줄 출력
console.log(a);
console.log(b);
});
풀이
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
for(let i=0; i<b; i++){ //i을 선언해주고 몇줄(b)만큼 반복
let str = ""; //출력할 변수 선언
for(let j=0; j<a; j++){ // j선언후 별을 한줄에 몇개 찍을지 반복
str = str + "*" //출력할 변수에 별을 담는다
}
console.log(str) // 출력
}
});
2. 짝수와 홀수
https://jann2codingdiary.tistory.com/8
항해99 2주차 알고리즘 문제 풀이1
문제 설명 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 numreturn 3 "Odd" 4 "
jann2codingdiary.tistory.com
3. 가운데 글자 가져오기
문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
재한사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s return "abcde" "c" "qwer" "we" 문제
function solution(s) {
var answer = '';
return answer;
}
풀이//a,b,c,d
index=[0,1,2,3]
function solution(s) {
var answer = '';
if (s.length % 2 == 0) { //s의 length를 2로 나눈 값이 0이면(짝수이면)
//answer값은 s.length를 2로나눈 값에 -1을 해준 값의 인덱스 + s.length를 2로 나눈값의 인덱스
answer = s[s.length / 2 -1] + s[s.length / 2]
} else { //홀수이면
answer = s[s.length / 2 -0.5] //answer값은 s.length를 2로 나눈 값에 -0.5를 해준 값의 인덱스
}
return answer;
}
다른풀이
function solution(s) {
return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}
// substr()은 문자열에서 특정 부분을 잘라낼 때 쓰인다.
-> substr(시작위치 , 자를 길이)
// 시작위치는 Math.ceil(s.length / 2) -1 -> 문자의 길이를 반으로 나눈 후 Math.ceil()로 올림 하고, 1을 뺴준다.
// 자를 길이는
짝수
-> 문자의 길이를 반으로 나누고 나머지가 0일 때 길이는 2
홀수
-> 문자의 길이를 반으로 나누고 나머지가 0일 때 길이는 1
**
Math.floor() : 소수점 이하를 버림한다.
Math.ceil() : 소수점 이하를 올림한다.
Math.round() : 소수점 이하를 반올림한다.substr(시작위치 , 자를 길이)
4. 두 정수 사이의 합
문제 설명
두 정수 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의 대소관계는 정해져있지 않습니다.
입출력 예
abreturn
a b return 3 5 12 3 3 3 5 3 12 문제
function solution(a, b) {
var answer = 0;
return answer;
}
문제 풀이
function solution(a, b) {
var answer = 0;
if (a < b) { //a가 b보다 작을 때
for(let i=a; i<=b; i++) { //i는 a부터 b보다 작거나 같을 때까지 +되면서 반복한 값
answer += i; //answer = 0+i
}
}else if (a > b) { //a가 b보다 클 때
for(let i=b; i<=a; i++) //i는 b부터 a보다 작거나 같을 때까지 +되면서 반복한 값
answer += i; //answer = 0+i
} else { //a와 b가 같을때
answer = a; //answer = a
}
return answer;
}
다른풀이
function adder(a, b){
var result = 0
//함수를 완성하세요
//가우스의 공식1부터 n까지의 숫자의 합을 구할 때
n(n+1)/2
return (a+b)*(Math.abs(b-a)+1)/2;
}
***Math.abs
주어진 숫자의 절대값.
Math.abs('-1'); // 1
Math.abs(-2); // 2
Math.abs(null); // 0
Math.abs(''); // 0
Math.abs([]); // 0
Math.abs([2]); // 2
Math.abs([1,2]); // NaN
Math.abs({}); // NaN
Math.abs('string'); // NaN
Math.abs(); // NaN
빈 객체, 하나 이상의 요소를 가진 배열, 숫자가 아닌 문자열, undefined나 빈 매개변수를 받으면 NaN을 반환합니다. null, 빈 문자열이나 빈 배열을 제공하면 0을 반환합니다.
'알고리즘 풀이' 카테고리의 다른 글
항해99 2주차 알고리즘 풀이4 (0) 2021.11.09 항해99 2주차 알고리즘 풀이3 (0) 2021.11.09 항해99 알고리즘 1일차(2) (0) 2021.11.09 항해99 2주차 알고리즘 풀이2 (0) 2021.11.08 항해99 2주차 알고리즘 문제 풀이1 (0) 2021.11.08