목록2024/02 (5)
초보 개발자의 성장 일기
타입을 작성할 때 한가지만 작성하는 경우도 있지만, 보통은 |을 사용해서 다양한 타입을 지정할 수도 있다. type A = string | number; // 넓은 타입 type B = string; // 좁은 타입 type C = string & number; // 제일 좁은 타입 |을 사용하면 또는 이라는 의미로 사용한 모든 타입이 가능하고 넓은 타입이다. 타입을 하나만 작성한 경우는 |을 사용한 경우보다는 좁은 타입이고, &를 사용하면 둘다 가능해야 하므로 제일 좁은 타입이 된다. 타입의 너비는 A > B > C 순이고 좁은 타입에서 넓은 타입으로 대입이 가능하다. 타입을 보고 좁은 타입인지 넓은 타입인지 구분할 수 있어야 한다. type A = { name: string }; type B = { ..
매개변수에 number 타입과 string타입이 들어오게 되는데, number가 들어올 경우 소수점 한자리까지만 남기려고 한다. function numOrStr(a: number | string) { a.toFixed(1); } 하지만 타입스크립트는 모든 경우를 고려하기 때문에 string이 매개변수로 들어올 경우 toFixed를 사용할 수 없어 오류가 난다. as를 사용해서 매개변수 a를 강제로 타입을 지정해주는 방법이 있다. function numOrStr(a: number | string) { (a as number).toFixed(1); } 하지만 이렇게 하면 a가 숫자라고 단정을 짓는것이기 때문에 위험한 코드이다. 다른 개발자가 틀린 코드를 작성했을 때만 사용하는것이 좋다. 이 경우는 타입 가드..
1. 문제 해석 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 자료구조 중 큐를 이용한 문제이다. 배열에 1부터 1씩 증가하는 숫자가 N개 존재하는데, 첫번째 숫자를 제거하고 두번째 숫자는 제거해서 마지막으로 옮기는것을 숫자가 한개만 남을때까지 반복한다. 2. 문제 풀이 for문을 이용해 1부터 N개까지의 배열을 만들어 주고, 배열의 길이가 1보다 크면(숫자가 1개 남기 전까지) 첫번째 숫자를 shift하고, 두번째 숫자를 push해서 맨 뒤..
1. 문제 해석 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 사실 이 문제를 바로 이해하는데 시간이 조금 걸렸지만 알고나면 쉬운 문제이다. 첫번째, 세번째 줄은 배열의 개수이고, 4번째 있는 줄이 2번째 있는 줄의 배열에 존재하면 1, 존재하지 않으면 0으로 나타내면 된다. 2. 문제 풀이 처음에는 for문으로 m의 배열의 값이 n의 배열에서 일치하는 값이 있는지 includes로 확인했다. ..
1. 문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 2. 풀이 방법 첫번째 원소는 input의 행의 길이이다. shift로 이 원소를 배열에서 빼고, len변수에 담는다. 그리고 결과를 넣어줄 새 배열을 선언한다. for 반복문을 통해서 각 행을 지정해줄 i를 선언하고 for ...of를 사용하여 각각의 행안에 있는 원소가 '('일 경우 1을 더하고 아닌경우 즉, ')'일 경우에는 -1을한다. cnt의 결과..