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

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

by heereal 2023. 3. 30.

Today I Learned

  • Programmers 문제 풀기
  • 기술면접 스터디

 


Programmers 문제 풀기

팩토리얼

나의 풀이

function solution(n) {
    let answer = 1;
    for ( i = 2; i <= Number.MAX_SAFE_INTEGER; i++ ) {
        answer *= i
        if ( n === answer ) {
            return i
        } else if ( answer > n ) {
            return i - 1
        }
    }
}

for문을 사용했는데 조건문을 뭘로 설정해야 할지 모르겠어서 저번에 찾아봤던 Number.MAX_SAFE_INTEGER (최대 정수값)을 사용했다. for문을 돌리면서 answer에 i를 계속해서 곱하고 if문 조건을 충족하면 값을 반환한다.

 

 

다른 사람의 풀이

function solution(n) {
    var answer = 1
    var a = 0
    while(answer <= n){
        a++
        answer *= a   
    }
    return a-1;
}

while문을 사용하면 조건문이 참일 때만 중괄호 안에 내용을 실행하기 때문에 따로 한계를 설정할 필요가 없다. while문을 아직 한 번도 안 써봤기 때문에 다음에는 for문 말고 while문 쓰는 방법을 익혀야겠다!😤 

 


기술면접 스터디 CS 지식

HTTP란?

  • 클라이언트와 서버 간의 자원을 교환하기 위한 TCP/IP 기반 통신 규약 (프로토콜)
  • 클라이언트-서버 모델 :클라이언트가 HTTP messages 양식에 맞춰 요청(Request)을 보내면, 서버도 HTTP messages 양식에 맞춰 응답(Response)함

 

특징

  • 단방향성: 서버가 먼저 응답을 보낼 수 없고 클라이언트가 요청을 보내야만 응답할 수 있음
  • 비연결성: 클라이언트의 요청으로 서버와 연결된 후, 요청에 대한 응답의 데이터를 전송하면 연결을 종료함
  • 따라서, 실시간 통신을 할 수 없음

 

단점

  • HTTP는 평문 통신이기 때문에 도청이 가능
  • 통신 상대가 검증된 상대인지 확인하지 않기 때문에 위장이 가능
  • 완전성을 증명할 수 없기 때문에 변조가 가능

 

HTTP 메세지 구조

  • HTTP messages는 클라이언트와 서버 간에 전송되는 데이터의 형식을 정의하는 규약
  • 유형
    • 요청(Requests): 클라이언트 → 서버
    • 응답(Responses): 서버 → 클라이언트
  • 구성
    • HTTP messages는 몇 줄의 텍스트 정보로 구성
    • 구성 파일, API, 기타 인터페이스에서 HTTP messages를 자동으로 완성하기 때문에 개발자는 이런 메시지를 직접 작성할 필요가 없음

 

요청(Requests)과 응답(Responses)의 구조

  1.  start line 
    • 요청이나 응답의 상태를 나타냄
    • start line (요청): HTTP method, Request target, HTTP version으로 구성됨
    • status line (응답): HTTP version, Status Code, Status Text로 구성됨
    • 항상 첫 번째 줄에 위치
  2.  HTTP headers 
    • 해당 request나 response에 대한 추가 정보를 담고 있는 부분
    • Key:Value 형태로 구성
    • general headers, request headers, entity headers로 구성됨
  3.  empty line 
    • 헤더와 본문을 구분하는 빈 줄
  4.  body 
    • 요청 또는 응답 관련 전송하는 데이터를 담고 있는 부분
    • 요청과 응답의 유형에 따라 선택적으로 사용 (전송하는 데이터가 없다면 body 부분은 비어있음)

 

참고

https://surprisecomputer.tistory.com/54

https://hanamon.kr/네트워크-http-메세지-message-요청과-응답-구조/

https://hahahoho5915.tistory.com/62

 

 

position  사용 방법

  • CSS의 position 속성은 HTML 요소의 위치를 지정하는 데 사용됨
  • position 속성은 주로 요소의 정확한 위치 지정을 위해서 top, left, bottom, right 속성과 함께 사용됨

 

position: static

  • position 속성의 기본값
  • HTML에 작성된 순서 그대로 브라우저 화면에 표시됨
  • 따라서 top, left, bottom, right 속성값은 무시됨

 

position: relative

  • 요소를 원래 위치를 기준으로 상대적(relative)으로 배치 가능
  • 요소의 위치 지정은 top, bottom, left, right 속성을 이용해서 요소가 원래 위치에 있을 때의 상하좌우로 부터 얼마나 떨어지게 할지를 지정함

 

position: absolute

  • 가장 가까운 위치에 있는 조상 요소를 기준으로 요소를 배치
  • DOM 트리를 따라 올라가다가 position 속성이 static이 아닌 첫 번째 상위 요소가 해당 요소의 배치 기준으로 설정됨
  • 어떤 요소의 display 속성을 absolute로 설정하면, 부모 요소의 display속성을 relative로 지정하여 사용
  • 부모 요소(가장 가까운 상위 요소)를 기준으로 top, left, bottom, right 속성을 적용

 

position: fixed

  • 요소를 항상 고정된 위치에 배치 가능
  • 자신이나 부모 요소가 아닌 뷰포트(viewport), 즉 브라우저 전체화면을 기준으로 요소를 배치함
  • top, left, bottom, right 속성은 각각 브라우저 상단, 좌측, 하단, 우측으로 부터 해당 요소가 얼마나 떨어져 있는지를 결정함

 

position: sticky

  • 설정된 위치(예 top: 0px)에 도달하기 전까지는 static 속성처럼 동작하다가 설정된 스크롤 지점에 다다르면 fixed 속성처럼 요소를 고정시킴
  • sitcky 속성은 필수적으로 top, bottom, left, right 중에 하나를 설정해야 함

 

참고 https://www.daleseo.com/css-position/


회고

이력서 자기소개 부분이 너무 진부하고 재미없는 거 같아서 전부 갈아엎고 싶은데 쉽지가 않다.. 자꾸 이력서가 부족하다는 생각하지 말고 일단 넣고 보는 게 맞는 거 같다! 그래서 오늘 원티드에서 제공하는 양식에 맞게 이력서를 업데이트하고 회사도 한 군데 지원했다. 이제 슬슬 시작해야지~

 

 

 

댓글