본문 바로가기

분류 전체보기38

프로그래머스 - 시저암호 [Java] https://school.programmers.co.kr/learn/courses/30/lessons/12926?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이 흐름입력 문자열의 모든 문자에 대해 반복알파벳이 아닌 경우 문자를 그대로 이어 붙이기알파벳인 경우 n만큼 밀어 이어 붙이기 코드 작성1. 입력 문자열의 모든 문자에 대해 반복 입력받은 문자열을 순회하며 문자를 하나씩 이어 붙여야 하므로 StringBuilder를 사용해 다음과 같이 구성한다.  char[] arr = s.toCharArray();StringBuilder builder = new StringBu.. 2025. 3. 19.
effective Typescript (6) 변경 관련된 오류 방지를 위해 readonly 사용하기다음은 삼각수를 출력하는 코드이다.function printTriangles(n: number) { const nums = []; for (let i = 0; i 이 함수는 배열 안의 숫자들을 모두 합친다. 그런데 계산이 끝나게 되면 원래 배열이 전부 비게 된다.자바스크립트 배열은 내용을 변경할 수 있기 때문에 타입스크립트에서도 역시 오류 없이 통과한다.오류의 범위를 좁히기 위해 arraySum이 배열을 변경하지 않는다는 선언을 한다. readonly 접근자를 사용하면 된다.function arraySum(arr: readonly number[]) { let sum = 0, num; while((num = arr.pop()) !=.. 2025. 3. 18.
프로그래머스 - 거리두기 확인하기 [Java, Javascript] https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명개발자를 희망하는 죠르디가 카카오에 면접을 보러 왔습니다.코로나 바이러스 감염 예방을 위해 응시자들은 거리를 둬서 대기를 해야하는데 개발 직군 면접인 만큼아래와 같은 규칙으로 대기실에 거리를 두고 앉도록 안내하고 있습니다.대기실은 5개이며, 각 대기실은 5x5 크기입니다.거리두기를 위하여 응시자들 끼리는 맨해튼 거리가 2 이하로 앉지 말아 주세요.단 응시자가 앉아있는 자리 사이가 파티션으로 막혀 있을 경우에는 허용합니다 5개의 대기실을.. 2025. 3. 18.
effective Typescript (5) 동적 데이터에 인덱스 시그니처 사용하기자바스크립트 객체는 문자열 키를 타입의 값에 관계없이 매핑한다.타입스크립트에서는 타입에 '인덱스 시그니처'를 명시하여 유연하게 매핑을 표현할 수 있다.type Rocket = {[property: string]: string}const rocket: Rocket = {name: 'Falcon',variant: 'v1.0',thrust: '4940'}; //정상property: string이 인덱스 시그니처이며 다음 세 가지 의미를 담게 된다.키의 이름: 키의 위치만 표시하는 용도이다. 타입 체커에서는 사용하지 않기 때문에 참고 정보로만 생각해도 된다.키의 타입: string이나 number 또는 symbol의 조합이어야 하지만 보통은 string을 사용한다.값의 타입.. 2025. 3. 17.
effective Typescript (4) 타입 공간과 값 공간의 심벌 구분하기타입스크립트의 심벌(symbol)은 타입 공간이나 값 공간 중의 한 곳에 존재한다.심벌은 이름이 같더라도 속하는 공간에 따라 다른 것을 나타낼 수 있기 때문에 혼란스러울 수 있다.interface Cylinder { radius: number; height: number;}const Cylinder = {radius: number, height: number} => ({radius, height});interface Cylinder에서 Cylinder는 타입으로 쓰인다. const Cylinder에서 Cylinder와 이름은 같지만 값으로 쓰이며, 서로 아무런 관련이 없다. 상황에 따라 Cylinder는 값으로 쓰이거나 타입으로 쓰인다.때로는 이런 점이 가끔.. 2025. 3. 16.
effective Typescript (3) any 타입 지양하기타입스크립트의 타입시스템은 점진적이고 선택적이다.코드에 타입을 조금씩 추가할 수 있기 때문에 점진적이고 타입체커를 언제든 해제할 수 있기 때문에 선택적이다.이 기능들의 핵심은 any타입이다.let age: number;age = '12'; // 오류, 문자열 형식은 number에 할당할 수 없음age = '12' as any; // OKany 타입에는 타입 안정성이 없다앞선 예제에는 age가 number타입으로 선언됐다. 그러나 as any를 사용하면서 string 타입을 할당하였다. 타입 체커는 선언에 따라 number 타입으로 판단할 것이고 이는 혼란을 불러일으킨다.age += 1 // age = '121'any는 함수 시그니처를 무시한다함수를 작성할 때는 시그니처를 명시해야 한다.. 2025. 3. 14.