본문 바로가기

전체 글

(115)
객체 Type 알아보기 객체의 값과 속성 타입 지정하기 type Height = number; type Name = string; interface IHeightRecord { [name: Name]: Height; } type THeightRecord = { [name: Name]: Height; } const heightRecord: IHeightRecord = { '철수': 170, '영희': 160, '길동': 175 } 구체적으로 속성명과 그 속성값의 type을 정하는 것이 아니라 속성명의 type은 무엇이고, 속성값의 type은 무엇인지만 정의할 수도 있다. interface와 접근제어자 interface IAnimal { readonly name: string; age: number; } type TAnimal =..
백준 9202 - Boggle https://www.acmicpc.net/problem/9202 9202번: Boggle 각각의 Boggle에 대해, 얻을 수 있는 최대 점수, 가장 긴 단어, 찾은 단어의 개수를 출력한다. 한 Boggle에서 같은 단어를 여러 번 찾은 경우에는 한 번만 찾은 것으로 센다. 가장 긴 단어가 여러 개 www.acmicpc.net 접근방법 결론적으로 문제를 정리해보면 다음과 같다. 단어는 인접한 글자로 만들 수 있다. 한 블록(주사위)은 각 단어에 한 번까지만 사용가능하다. 단어를 만들면 그 단어의 길이에 따라 점수를 부여받는다. 주어진 Boggle grid에서 받을 수 있는 최대 점수와 찾을 수 있는 가장 긴 단어와 찾은 단어의 수를 구해라! 주의점 한 boggle에서 같은 단어 여러 번 찾기 불가능하다..
VSCode REST Client REST Client는 Vs extension으로 api 호출을 브라우저가 아닌 vs 상에서 가능해주도록 한다 먼저 REST CLIENT extension을 다운받아주자! 사용법 http를 확장자로 가지는 파일에 다음과 같은 형식으로 텍스트를 입력해준다. ### method url Protoco 위와 같이 파일 작성 시 ### 아래에 send request 버튼이 생긴다. 이 send request를 클릭하면 요청이 보내지고, 결과를 확인할 수 있다. Rest Client를 통해 api를 테스트하고 결과를 확인하여 편리하게 코딩할 수 있다~
Type의 확장 Typescript에서 타입지정을 위해 Type alias와 Interface를 사용할 수 있는데, 이렇게 지정된 type들을 확장하는 기능도 지원하고 있다. 어떻게 확장할 수 있는지 배워보도록 하자! Intersection interface animal { readonly name: string; age: number; } type bird = animal & { wing: number; } type alias 기능을 사용할 때는 &를 사용해 연산하듯이 두 타입을 합칠 수 있다. 이를 `intersection`이라고 부르고, interface나 type alias로 지정된 타입을 모두 결합할 수 있다. 상속 interface animal { readonly name: string; age: number..
Type 추론 Typescript를 사용하다보면 타입 지정을 하지 않아도 에러가 나타나지 않는 경우가 있다. 이는 ts가 코드상황을 보고 타입을 인지 후 타입을 추론하는 것이다. → 타입추론 for(let i = 0; i < feeds.length; i++) feeds[i].read = false; 위와 같은 for문에서 i의 초기값으로 0을 넣고 있기때문에i의 type은 number라는 것을 알 수 있다. 이에 ts는 i의 type을 number로 지정하고 number type 외에 다른 type의 값을 넣으면 에러를 표시해준다.
백준 12100 - 2048 (Easy) https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 문제 분석 문제 자체는 굉장히 간단하다. 처음에 주어진 블록에서 5번을 움직여서 가장 큰 블록을 찾으면 된다. 주의점은 한 번 움직일 때 같은 칸에서 두 번 합쳐질 수 없으며, 이동하는 방향을 우선으로 합쳐야 한다. 위 그림을 예시로 보자. 왼쪽 블록들을 위쪽으로 움직인 경우의 결과에 대한 그림이다. 결과블록의 첫번째 열을 보면 4가 중복되었지만 합쳐지지 못했다. 왜냐..
Spring Boot + JPA 설정 Spring data jpa를 Spring Boot와 함께 사용하는 법에 대해 알아보겠다! 설정 jpa만 사용하는 경우에 jpa관련 설정을 'persistence.xml'을 통해 굉장히 길고 복잡하게 해야 했다. 하지만 spring boot를 사용하게 되면 이러한 설정들이 설정파일(.yml이나 properties)을 통해 자동화된다. 다음은 application.yml을 통해 설정한 예시이다. spring: # DB 접속 설정 datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver # JPA 설정 jpa: hibernate: ddl-auto: create properti..
백준 15997 - 승부 예측 백준 승부예측 15997번: 승부 예측 첫 번째 줄에 조별리그를 진행할 국가명 네 개가 공백으로 구분되어 주어진다. 주어지는 모든 국가명은 알파벳 대문자로만 구성된 길이가 1 이상 10 이하인 문자열이다. 두 번째 줄부터 일곱 번 www.acmicpc.net 승부 예측 문제는 각 4팀이 다음 라운드로 진출할 확률이 얼마나 되는지 구하는 문제다. 처음에 봤을 때 막막했지만, 침착하게 생각하니 풀 수 있었다. 먼저 이 문제의 핵심은 다음과 같다. 위 그림처럼 모든 경우의 수에 대해 탐색을 해봐야 한다.(선은 다 그리진 못 했다.) 총 6경기를 하는데 각 6경기마다 이기고 비기고 지는 3가지 경우가 생기기때문에 모든 경우의 수는 3의 6승 = 729가 된다. 하지만 확률 중 0이 있으면 경우의 수는 줄어든다...