TIL

8/26 TIL

nbcssw 2024. 8. 26. 20:46

스탠다드반 자료조사 - https://nbcssw.tistory.com/20

 

서버와 클라이언트

서버와 클라이언트의 개념서버 (Server)Serve(제공하다) + er무언가를 제공해주는 역할. 서비스를 제공하는 컴퓨터.클라이언트 (Client)Client(고객)Server가 무언가를 제공해주는 대상. 서비스를 사용하

nbcssw.tistory.com

 

데일리 루틴

46번 - 숫자 문자열과 영단어

https://school.programmers.co.kr/learn/courses/30/lessons/81301

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function engToNumber(s){
    switch(s.join('')){
        case 'zero':
            return 0;
        case 'one':
            return 1;
        case 'two':
            return 2;
        case 'three':
            return 3;
        case 'four':
            return 4;
        case 'five':
            return 5;
        case 'six':
            return 6;
        case 'seven':
            return 7;
        case 'eight':
            return 8;
        case 'nine':
            return 9;
        default:
            return null;
    }
}

function solution(s) {
    var answer = [];
    let temp = [];
    
    for(let i=0; i<s.length; i++){
        if(s[i]%1 !== 0){
            temp.push(s[i]);
        }
        else if (s[i]%1 === 0){
            answer.push(Number(s[i]));
            continue;
        }

        if(engToNumber(temp) !== null){
            answer.push(engToNumber(temp));
            temp = [];
        }
    }
    
    return Number(answer.join(''));
}

 

 

알고리즘 문제풀이 3

# 문제 1

오늘, 두산 베어스와 기아 타이거스가 야구 경기를 하고 있습니다. 이제, 두산 베어스의 공격 차례입니다. 현재 주자는 아무도 없지만, 두산 베어스는 계속해서 1루타(안타)를 치기 시작합니다.

안타를 칠 때마다 주자들은 1루씩 진루합니다. 두산 베어스가 기아 타이거스보다 더 높은 점수를 얻으려면 최소 몇 개의 안타를 쳐야 할까요? 참고로, 두산 베어스와 기아 타이거스의 점수는 프로그램 실행 시 임의적으로 사용자가 줄 수 있으며 두산 베어스에게 1루타의 신이 강림이 되어 타석을 설 때마다 무조건 1루타를 치는 것이 확정이라고 가정해주세요.

야구의 득점 조건

- 타자는 홈에서 타석을 시작합니다.
- 타자는 홈 → 1루 → 2루 → 3루 → 홈으로 들어오는 순간 1점을 획득합니다.

function solution(doosan, kia){
    const gap = kia - doosan;
    if (gap < 0)
        return 0;
    else 
        return 4 + gap;
}

console.log(solution(0,8));

 

 

# 문제 2

이진 배열 `nums`와 정수 `k`가 주어졌을 때, 최대 `k`개의 0을 1로 뒤집을 수 있다면 배열에서 연속된 1의 최대 개수를 반환하세요.

function solution(nums, k) {
    let max = 0;

    for (let i = 0; i < nums.length; i++) {
        // console.log('인덱스 ', i, '부터');
        let continuous = 0;
        let count = 0;
        for (let j = i; j < nums.length; j++) {
            continuous++;
            if (nums[j] === 0) {
                count++;
                if (count > k)
                    break;
                // console.log('count = ', count);
            }
            // console.log('continuous = ', continuous);
            
        }
        if (continuous > max){
            max = continuous - 1;
            // console.log('max = ', max);
        }
        // console.log('--------------------');
    }

    return max;
}

const nums = [1,1,1,0,0,0,1,1,1,1,0];
const k = 2;

console.log(solution(nums, k));

 

# 문제 3

 

스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다.

  1. 속한 노래가 많이 재생된 장르를 먼저 수록합니다.
  2. 장르 내에서 많이 재생된 노래를 먼저 수록합니다.
  3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다.

노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요.

 

제약 조건:

  • genres[i]는 고유번호가 i인 노래의 장르입니다.
  • plays[i]는 고유번호가 i인 노래가 재생된 횟수입니다.
  • genres와 plays의 길이는 같으며, 이는 1 이상 10,000 이하입니다.
  • 장르 종류는 100개 미만입니다.
  • 장르에 속한 곡이 하나라면, 하나의 곡만 선택합니다.
  • 모든 장르는 재생된 횟수가 다릅니다.

어떤 식으로 풀어나가야 할 지 모르겠다..

'TIL' 카테고리의 다른 글

TIL 8/28  (0) 2024.08.28
TIL 8/27  (0) 2024.08.27
8/23 TIL  (0) 2024.08.23
8/22 TIL  (0) 2024.08.22
TIL 8/21 - 데일리 루틴 40번, 개인과제  (0) 2024.08.21