518일동안 단 하루도 빠지지 않고 알고리즘을 풀었다.
기억해두고 싶은 구절 1
이런말 하면서 복잡도 이해없이 짜서 DB에게 가혹행위를 시킨다던지…애초부터 잘못짠 소스를 리팩토링 한답시고 붙잡고 앉아있는 경우를 많이 봤다.
결국 이 모든건 Back-end Front-end를 떠나서 서버비용 증가, 사용자 경험을 저하등 많은 문제를 야기한다.
나는 알고리즘이 실제 문제 해결에 분명히 도움이된다고 생각한다.또한 System Design을 효율적으로 설계 하는데도 도움이 된다고 생각한다.
기억해두고 싶은 구절 2
알고리즘 트레이닝은 당신에게 '무엇이 잘못됐는지' 파악하는 시간을 단축 시켜 준다.어쩌면 이 트레이닝을 통해서 당신이 죽을때까지 깨닫지 못하는 무언가를 알게 될 수도 있다.
아는만큼 보인다.
//confirm창 :true시 계속해서 띄우기
while(true){
let answer = confirm("계속할까요? "); // confirm도 확인하는 알림창이다 (확인: true, 취소 : false)
if(!answer){ // answer가 false라면
break;
}
}
continue
// 짝수만 찍기
for(let i = 0; i < 10; i++){ // 3.i =2로 다시 진행된다.
if(i%2){ // 1. i=1이면
continue; //2. continue를 만나
}
console.log(i) //
}
💡 명확한 횟수 for , 아니면 while
함수 작성
// 함수 함수이름 매개변수
function showError(){
alert('에러가 발생했습니다. 다시 시도해주세요');
}
// 포인트 : showError라는 함수를 만들고 다른 곳에서 사용할 수 있다는 것이다.
// 한 서비스에서 데이터 호출, 로그인, 결제 등을 실패할때마다 함수 한번이면 끝난다.
**showError();**
매개변수 , 지역변수
function sayHello(name){
let msg = 'Hello';
if(name){ //if를 이런식으로도 사용할 수 있다.
msg += name;
}
console.log(msg)
}
sayHello('위')
// 출력 : Hello위
전역변수
아래 코드처럼 어디서든 접근 가능한 변수를 전역변수라고 한다.
Function 밖에서도 사용하는 것이다.
**let msg = 'Hello'; /**/ 외부로 빼준다.
function sayHello(name){
if(name){
msg += name;
}
console.log(msg)
}
sayHello('위');
// 출력 : Hello위
차이점은 아래의 코드에서 확인해보자
let msg = 'Hello';
console.log('함수 호출 전')
console.log(msg)
function sayHello(name){
if(name){
msg += name;
}
console.log('함수 내부')
console.log(msg)
}
sayHello('위');
console.log('함수 호출 후')
console.log(msg)
// 출력 : Hello위
new Set()으로 중복값 제거 → Error
만약 i번째 원소가 i+1의 원소와 같지 않으면 i번째 원소를 새로운 변수에 저장한다.
function solution(arr)
{
var newbox = []; // 새로운 변수
for(let i = 0; i <arr.length; i++){
if(arr[i] !== arr[i+1]){ // i번째 원소와 i+1의 원소가 같지 않다면
newbox.push(arr[i]) // 새로운 변수에 저장한다.
}
}
return newbox;
}
function solution(numbers) {
let total =[];
for(let i = 0; i < numbers.length; i++){
for(let n = i+1; n < numbers.length; n++ ){
total.push(numbers[i] + numbers[n]) // i번째와 i+1번째를 더해 total에 담아준다.
}
}
var get = [...total] // total을 배열 1개로 만들어주고
var set = new Set(get) // 중복을 제거하고
var end = [...set] //set{} -> []배열로 저장한다
return end.sort(function (a,b) {return a-b;}); // 오름차순
}
...
를 추가하면 바로 배열로 만들 수 있다니.. ㅋㅋㅋ나같이 두번에 걸치지 않아도 된다..function solution(numbers) {
const temp = []
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
temp.push(numbers[i] + numbers[j])
}
}
const answer = [...new Set(temp)]
return answer.sort((a, b) => a - b)
}
수포자들의 맞은 답을 count 하는 것까지는 찾았지만 큰값찾기부터 어떻게 해줘야하는지 .. 검색하기 시작했다 .
//1,2,3 중에 제일 큰 값 찾기
var max =0;
var point=[1,2,3]
for(var j=0; j<point.length; j++){
if(point[j] > max)
max = point[j];
}console.log(max)
큰값을 찾고 index+1의 값으로 호출
function solution(answers) {
var list =[[1,2,3,4,5],
[2,1,2,3,2,4,2,5],
[3,3,1,1,2,2,4,4,5,5]]
var point =[0,0,0]
var answer =[];
for(let i =0; i < answers.length; i++){
//1수포자
if(answers[i] === list[0][i%5]){
point[0] += 1;
}
if(answers[i] === list[1][i%8]){
point[1] += 1;
}
if(answers[i] === list[2][i%10]){
point[2] += 1;
}
}
var max = [] ;
for(let j = 0; j<point.length; j++){
if(max < point[j]){
max = point[j]
}
}// 제일 큰 값 5를 넣었다. 그럼 그걸 또 point와 비교해서 번째수를 넣어준다.
for (let y = 0; y < point.length; y++){
if(max === point[y]){
answer.push(y+1)
}
}
return answer;
}
// 만약에 for 문에서 몫의 값을 추출하지 않는다면
// function solution(answers) {
// var answer = [];
// var a1 = [1, 2, 3, 4, 5];
// var a2 = [2, 1, 2, 3, 2, 4, 2, 5]
// var a3 = [ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
// var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
// var a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
// var a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
// var max = Math.max(a1c,a2c,a3c);
// if (a1c === max) {answer.push(1)};
// if (a2c === max) {answer.push(2)};
// if (a3c === max) {answer.push(3)};
// return answer;
// }
sort함수를 완벽하게 이해해야만 풀 수 있는 문제가 아닐까 싶다
a> b값을 비교해서 a>b일때 오름차순으로 정렬할 수 있는 함수
sort함수 자체적으로 문자열을 비교하는 함수이므로 모든 값에 이런식으로 사용하면 오름차순 내림차순으로 정렬할 수 있다.
function solution(strings, n) {
return strings.sort((a,b)=>{
if(a[n] > b[n]) { return 1; }
if(a[n] < b[n]) { return -1; }
if(a[n]=== b[n]){
if(a > b){ return 1; }
if(a < b){ return -1;}
}
});
}
var a = "SfkdnfgsS”
a.split('') =['S', 'f', 'k', 'd', 'n', 'f', 'g', 's', 'S']
b.sort() ='S', 'S', 'd', 'f', 'f', 'g', 'k', 'n', 's']
d.reverse() = ['s', 'n', 'k', 'g', 'f', 'f', 'd', 'S', 'S']
e.join('') = 'SSdffgkns’
function solution(s) {
return s.split('').sort().reverse().join('');
}