본문 바로가기
메모장/코딩테스트 준비

자바스크립트 코딩 문제 결과 참고용

by code2772 2023. 4. 6.

[ 목차 ]

    728x90
    반응형

    코드는 입력 문자열을 가져와 대괄호 안의 참조를 번호가 매겨진 참조로 바꾸고 끝에 번호가 매겨진 참조 목록을 추가하여 형식을 지정하는 JavaScript 함수 'formatThesis'

    function formatThesis(input) {
      let references = new Map(); 
      let referenceCounter = 1; // 참고문헌 번호를 위한 카운터 초기화
    
      let revisedInput = input.replace(/\[(.*?)\]/g, (match, titles) => { // 대괄호 안의 텍스트를 참고문헌 번호로 대체
        let titleList = titles.split(",").map(title => title.trim()); // 쉼표로 구분된 제목들을 분리하고 공백 제거
        let referenceNumbers = []; // 참고문헌 번호를 저장할 배열 초기화
    
        titleList.forEach(title => { // 제목 목록의 각 제목에 대해 반복
          if (references.has(title)) { // 제목이 이미 참고문헌 맵에 있는 경우
            referenceNumbers.push(references.get(title)); // 기존의 참고문헌 번호를 배열에 추가
          } else {
            references.set(title, referenceCounter); // 제목이 참고문헌 맵에 없는 경우 새로운 참고문헌 번호 할당
            referenceNumbers.push(referenceCounter); // 새로운 참고문헌 번호를 배열에 추가
            referenceCounter++; // 다음 참고문헌 번호를 위해 참고문헌 카운터 증가
          }
        });
    
        return `[ ${referenceNumbers.sort((a, b) => a - b).join(", ")} ]`; // 배열 내의 참고문헌 번호를 정렬하여 대괄호 안에 반환
      });
    
      let referenceList = Array.from(references.entries()).map(([title, number]) => { // [번호] 제목 형식의 참고문헌 목록 생성
        return `[${number}] ${title}`;
      }).join("\n"); // 줄바꿈으로 참고문헌들을 연결
    
      return `${revisedInput}\n${referenceList}`; // 개정된 입력과 참고문헌 목록을 아래에 추가하여 반환
    }
    
    let input = "Deeper neural networks are more difficult to train. We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously.[ some_paper_a, some_paper_b ] We explicitly reformulate the layers as learning residual functions with reference to the layer inputs, instead of learning unreferenced functions.[ some_book_a , some_paper_a ] We provide comprehensive empirical evidence showing that these residual networks are easier to optimize, and can gain accuracy from considerably increased depth. [some_book_b]";
    
    let output = formatThesis(input); // 입력값으로 formatThesis 함수 호출
    
    console.log(output); // 포맷팅된 논문과 참고문헌을 출력

    1. 코드는 Map 개체를 사용하여 참조 및 해당 번호를 저장합니다. references 맵은 기존 참조와 해당 번호를 추적하는 데 사용되는 반면 referenceCounter 변수는 새 참조 번호를 생성하는 데 사용

    2. input 문자열은 \[(.*?)\] 정규식과 함께 replace 메서드를 사용하여 처리되며 대괄호 안의 모든 텍스트를 일치시키고 그룹으로 캡처. 제공된 콜백 함수는 캡처된 제목을 쉼표로 분할하고 트리밍하고 참조 번호 목록을 생성하는 데 사용됩니다. 참조 번호는 정렬되어 대괄호로 묶이고 업데이트된 참조는 revisedInput으로 반환됩니다.

    3. Array.from 메소드는 references 맵을 항목 배열로 변환한 다음 map 메소드를 사용하여 형식이 지정된 [숫자] 제목 문자열로 매핑하는 데 사용됩니다. 형식이 지정된 참조 문자열의 결과 배열은 'referenceList'를 생성하기 위해 개행 문자와 결합

    4. 마지막으로 revisedInput 및 referenceList는 템플릿 리터럴을 사용하여 연결되어 formatThesis 함수의 출력으로 반환되는 형식화된 논문 콘텐츠를 생성

    5. input 문자열은 시연용 샘플 콘텐츠로 제공되지만 필요에 따라 자신의 논문 콘텐츠로 대체할 수 있습니다.

    6. 형식화된 논문 내용은 console.log를 사용하여 콘솔에 출력

     

    JavaScript 코드는 번호가 매겨진 참조로 논문 콘텐츠의 형식을 지정하기 위한 기능적 솔루션으로 보입니다. 그러나 특정 사용 사례 및 요구 사항에 따라 추가 테스트 및 검증이 필요

     

    반응형