본문 바로가기
알고리즘/Programmers

[TIL] 2023.03.27 기술면접 스터디, Programmers 문제 풀기

by heereal 2023. 3. 27.

Today I Learned

  • Programmers 문제 풀기
  • 스파르타 기술면접 스터디 시작

 


Programmers 문제 풀기

중복된 문자 제거

나의 풀이

function solution(my_string) {
    let answer = "";
    my_string.split("").forEach((item) => answer.includes(item) ? null : answer += item)
    return answer;
}

my_string을 배열로 만든 후 foreach문을 돌려서 answr.includes(item)이라면 즉, 중복된 문자열이라면 넘어가고 false가 출력될 때만 answer에 문자열을 추가하도록 했다.

 

 

다른 사람의 풀이 01

function solution(my_string) {
    return [...new Set(my_string)].join('');
}

중복을 허용하지 않는 Set 객체를 이용해서 중복되는 문자열을 거른 배열을 새로 만들고, join 메서드로 문자열로 합친다.

 

Set

Set 객체는 값 콜렉션으로, 삽입 순서대로 요소를 순회할 수 있습니다. 하나의 Set 내 값은 한 번만 나타날 수 있습니다. 즉, 어떤 값은 그 Set 콜렉션 내에서 유일합니다.

// 문자열 중복 제거
const str = 'abcaabbd';

// new Set으로 중복 제거
new Set(str);			// {"a", "b", "c", "z"}
[...new Set(str)];		//  ["a", "b", "c", "z"]
[...new Set(str)].join('');	// "abcz"


// 배열 중복 제거
const arr = ['a', 'b', 'c', 'a', 'a', 'b', 'b', 'd'];

// 1. [...new Set(arr)]
[...new Set(arr)]	// ["a", "b", "c", "d"]

// 2. Array.prototype.filter()
// indexOf는 처음으로 발견한 a의 index 위치만 반환하기 때문에,
// 그 다음에 a를 순회할때는 indexOf(v)와 i가 맞지 않는다.
arr.filter((v, i) => arr.indexOf(v) === i); // ["a", "b", "c", "d"]

출처 https://ddoni-code.tistory.com/21

 

 

다른 사람의 풀이 02

var solution=s=>[...s].filter((c,i)=>s.indexOf(c)==i).join('')

indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스만 반환한다는 속성을 이용해 filter 메서드로 처리한다.

 


기술면접 스터디 CS 과제

웹페이지가 브라우저에 랜더링되는 과정

  1. 웹페이지가 로드될 때, 브라우저는 서버로부터 HTML, CSS 및 JavaScript 파일을 다운로드함
  2. 브라우저는 다운로드한 HTML 파일을 파싱하여 DOM 트리를 생성
  3. 브라우저는 다운로드한 CSS 파일을 파싱하여 CSSOM 트리를 생성, 이 규칙은 DOM 요소에 적용됨
  4. CSS 파싱이 종료되면 잠시 중단 되었던 html을 다시 읽고 DOM 트리를 완성
  5. 레이아웃: 브라우저는 DOM과 스타일 규칙을 사용하여 각 요소의 위치와 크기를 계산한 후 각 요소가 화면에 표시될 위치를 결정
  6. 렌더 트리 형성: 브라우저는 계산된 위치와 크기를 사용하여 각 요소를 화면에 그리는데 이 과정에서 각 요소의 배경색, 테두리, 그림자 등이 적용됨
  7. 브라우저는 다운로드한 JavaScript 파일을 실행하여 동적인 기능을 추가함
  8. 브라우저가 화면을 그리고, 웹페이지가 완전히 로드됨

 

Restful API

  • RESTful API는 REST 아키텍처를 구현하는 웹 서비스를 나타내기 위해서 사용되는 용어
  • HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구축할 수 있음
  • 확장성과 재사용성을 높여 유지보수 및 운용이 편리함
  • RESTful API는 HTTP 메서드를 이용하여 서버와 클라이언트 사이의 통신 방식을 정의함

 

Restful API HTTP 주요 메서드

GET

  • 서버에 지정한 리소스의 정보를 요청하는 메서드
  • ex) 브라우저에서 웹페이지를 요청할 때 사용

POST

  • 지정한 리소스에 새로운 데이터를 추가하는 메서드
  • ex) 사용자가 회원가입을 하거나 게시글을 작성할 때

PUT

  • 지정한 리소스를 수정하는 메서드 (클라이언트가 서버에게 수정을 요청)
  • ex) 사용자가 프로필 정보를 수정하거나 게시글을 수정할 때

DELETE

  • 지정한 리소스를 삭제하는 메서드 (클라이언트가 서버에게 삭제를 요청)
  • ex) 사용자가 게시글을 삭제하거나, 계정을 삭제할 때

 


회고

저녁 9시에 진행된 기술면접 멘토링 시간

오늘부터 스파르타에서 진행하는 기술면접 스터디가 시작됐다. 일단은 첫날이라 이력서 페어리뷰는 생략하고 CS 질문에 답변하는 데일리 과제만 진행했다. 오늘은 젭 마이크 이슈로 인해 팀워들과 서로 블로그 링크를 공유하며 피드백 댓글을 남겨주는 식으로 스터디를 진행했는데 내일은 실시간으로 말하며 답변을 공유할 거 같다.

 

오늘은 데일리 과제 답변 준비를 제대로 못했기 때문에 내일은 좀 열심히 준비해 볼 생각이다! 그리고 내일 밤에 있는 모의면접 준비를 위해서 내 강점 대본 만들고 목터뷰 준비했던 질문들을 다시 한번 읽어봐야겠다.

 

댓글