목록Javascript + Typescript (375)
치춘짱베리굿나이스
2차원 배열의 합 문제 2차원 배열이 주어졌을 때 (i, j) 위치부터 (x, y) 위치까지에 저장되어 있는 수들의 합을 구하는 프로그램을 작성하시오. 배열의 (i, j) 위치는 i행 j열을 나타낸다. 입력 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 합을 구할 부분의 개수 K(1 ≤ K ≤ 10,000)가 주어진다. 다음 K개의 줄에는 네 개의 정수로 i, j, x, y가 주어진다(1 ≤ i ≤ x ≤ N, 1 ≤ j ≤ y ≤ M). 출력 K개의 줄에 순서대로 배열의 합을 출력한다. 배열의 합은 (2^31)-1보다 작거나 같다. 풀..
너의 평점은 문제 인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치훈이의 전공평점을 계산해주는 프로그램을 작성해보자. 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다. 인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다. P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다. 과연 치훈이는 무사히 졸업할 수 있을까? 입력 20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다. 출력 치훈이의 전공평점을 출력한다. 정답과의 절대오차 또는 상대오차가 10^(..
비동기와 콜백 함수 ver. 2023 https://blog.chichoon.com/520 비동기 처리와 Promise 비동기 처리와 Promise 동기 (Synchronous) 와 비동기 (Asynchronous) const [testValue, setTestValue] = useState(0); const handleOnClick = () => { setTestValue(testValue + 1); setTestValue(testValue + 1); setTestValue(testValue + 1); setTestValue(t blog.chichoon.com 비동기와 Promise에 관해서 한번 글을 적은 적이 있었는데 이번에는 2023 ver. 느낌으로 좀 더 업그레이드해서 적어보려 한다 맨날 공부..
문서 검색 문제 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다. 예를 들어, 문서가 abababa이고, 그리고 찾으려는 단어가 ababa라면, 세준이의 이 함수는 이 단어를 0번부터 찾을 수 있고, 2번부터도 찾을 수 있다. 그러나 동시에 셀 수는 없다. 세준이는 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇 번 중복되지 않게 등장하는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문서가 주어진다. 문서의 길이는 최대 2500이다. 둘째 줄에 검색하고 싶은 단어가 주어진다. 이 길이는 최대 50이다. 문서와 단어는 알파벳 소문자와 공백으로 이루어져..
Hoisting console.log(a); // 1 ?! var a = 1; 자바스크립트 단골 질문인 호이스팅이다 호이스팅 자체는 어떻게든 이해가 가더라도, 그 원리까지 공부하자니 온갖 선행 개념들이 많아 이 김에 정리해볼까 한다 왜 발생하고 어떻게 발생하는지 알아보도록 하자 설명 Hoist라는 영단어는 무언가를 끌어 올린다는 뜻을 가지고 있다 뜻을 풀었으니 한줄요약하자면 호이스팅은 변수나 함수의 선언을 맨 위로 끌어올린 것처럼 동작하는 현상이다 실제로 변수나 함수 선언이 최상단으로 끌어올려진 것은 아니고, 자바스크립트 엔진의 특성상 끌어올려진 것 처럼 동작하는 것 뿐이라고 한다 발생 이유 https://chichoon.tistory.com/921 실행 컨텍스트에 대해 필독하고 오자 (호이스팅은 실행 ..
실행 컨텍스트 호이스팅을 알아보기 전에 실행 컨텍스트에 관해서 짚고 넘어갈 필요가 있다 호이스팅이랑 같이 적으려다가 실행 컨텍스트 쪽 분량이 너무 방대해지는 바람에 호이스팅이랑 분리함… 설명 자바스크립트에서 사용되는 객체로, (자바스크립트는 진짜 모든 것이 객체 같다…) 실행할 코드에 제공할 변수, 함수 등의 정보들을 모아놓는 공간이라고 말할 수 있겠다 쉽게 말하자면 코드의 실행 환경을 객체로 저장해둔 것이라고 생각하면 좋다 이 실행 컨텍스트는 콜 스택에 적재되어 함수가 순서대로 실행될 수 있도록 한다 콜 스택 (호출 스택) https://blog.chichoon.com/701 자세한 것은 이 포스팅을 참조하자 코드가 실행될 때마다 실행 컨텍스트 (프레임) 가 쌓이는 공간이다 말 그대로 스택이라 LIFO..
any, unknown, never any와 unknown 둘이 상당히 비슷해 보이는데 살짝 다른, 특별한 타입 키워드이다 never는 갑자기 생각나서 추가했다 any let a: any = 1; any 쓰면 애니추천 모든 타입이 할당될 수 있는 타입이다 메타몽 같은 타입이라고 생각하면 된다… any는 무엇이든 될 수 있다 any를 쓴다는 것은 사실상 “타입 체크를 하지 마시오” 라고 말하는 것과 같다 특징 let a: any = 1; a = [1, 2, 3]; a = "hello"; a = { name: "abc" } 모든 타입이 할당될 수 있다는 것은, 위처럼 모든 타입의 값들을 할당받을 수 있다는 뜻이다 any는 무엇이든 될 수 있기 때문에! 위처럼 어떠한 값을 대입하든 오류가 발생하지 않는다 le..
var, let, const 차이점 사실 지금은 var를 잘 안 쓰긴 한데 왜 안 쓰게 됐는진 잘 몰라서… 중복 선언 var var a = 1; var a = 2; var a = 3; var는 중복 선언이 가능하다 새로 선언했을 때 초기화한 값이 이전 값을 덮어씌우는 방식으로 작동한다 코드가 길어졌을 때 값을 재할당하는 실수가 발생할 가능성이 높고 값이 어디서 바뀌었는지 파악하기도 어려워진다는 단점이 있다 var a = 1; var a; // 무시됨 초기화 없이 새로 선언만 할 경우 해당 라인은 무시된다 let let a = 1; let a = 2; // 오류 let은 중복 선언이 불가능하며, 해당 변수가 이미 선언되었다는 오류가 발생한다 const const a = 1; const a = 2; // 오..