WEB

Nest.JS/Project. Adoan

#0 초기 구상 및 현재까지 작업 정리

음.. 우선 개요부터 설명하자면, 예전부터 텍스트로만 구성된 간단한 웹 RPG게임을 자주 만들었었는데 이게 어느정도 수준에 오르니까 유저들이 직접 나무위키도 만들어주고.. 뭐 이런저런 사건사고가 많았다. 운영이나 좋아해주시는 분들도 많았는데, 정작 게임물 관리 등급 위원회에서 제지를 받아서 서비스를 종료하긴 했지만.. 따라서 이번엔 그냥 한국에서의 영향을 받지 않게끔. 아예 영문으로 제작하고, 해외에 배포를 해보기로 결정했다. 현재 서비스중인 도메인을 그대로 쓸 예정이고.. 음 현재 서비스중인 비영리 웹게임은 천천히 어느정도 런칭 준비가 되면 그때가서 오픈채팅에 공지를 하고 옮길예정.. 최초 서비스 됐던 프로젝트는 순수하게 html, js, css 만을 이용했었는데, 여기서 발생했던 장단점은 Vanill..

Javascript

태그드 템플릿(Tagged Templat)이란?

지난번 nextJS 포스팅에서 @vercel/postgres의 sql에 직접적으로 템플릿 리터럴을 넣으면 오류가 발생하는 부분에 대해 작성했었다. 일단 템플릿 리터럴도 그냥 되고, 편하니까 사용하고 있었는데 이왕 정식 명칭을 알았으니 이제부턴 있어보이게 템플릿 리터럴이라고 표현해야겠다. (그전까진 그냥 백틱이라고만 표현했음..) 템플릿 리터럴 자바스크립트에서 문자열을 생성하는 방법중 하나. ``으로 감싸진 문자열로, 변수, 표현식을 ${}의 형태로 사용할 수 있다. const name = 'John'; const greeting = `Hello, ${name}!`; console.log(greeting); // 출력: "Hello, John!" 그렇다면 sql`템플릿 리터럴`의 형태로 사용하던 함수는 뭘..

Nest.JS

[@vercel/postgres] syntax error at or near "$1" 에러

이전 포스트의 캐싱문제를 해결 후 바로 작업을 이어나가려..... 고했지만 table 생성 후 기존 users 데이터를 Insert하는 과정에서 오류가 발생했다. NeonDbError: syntax error at or near "$1" 오잉.. 보내는 sql을 콘솔에 찍어봐도 눈씻고 찾아봐도 $1이라는 문자열은 존재하지 않는다. 혹시나 하는 마음에 vercel dashboard UI에서 쿼리를 붙여넣기 해보았더니.. 이번엔 데이터가 제대로 들어간다. 그러면 또.. 뭔가.. 문제를 해결해야 하는데 흠.. 다시 늘 하던대로 확실한 부분 부터 정리를 하자면, 1. sql 쿼리 자체에는 문제가 없다. = @vercel/postgres에서 가져온 sql이 쿼리문자열을 뭔가 처리하는 과정에서 생긴 오류로 판단. ..

Nest.JS

@vercel/postgres 오래된 데이터가 나오는 경우 해결법

개인적으로 next.js를 사용하여 간단한 프로젝트를 진행하면서, 이번에야 말로 vercel과 postgre를 한번 사용해보겠다고 마음을 먹었다. 연동까지도 잘됐고, 배포도 성공적으로 완료했는데.. 문제는 postgre와의 연결? 이였다. 분명 데이터베이스에 제대로 접근을 했고, 테이블 생성도 확인되었고, 최초 insert나 select 쿼리도 정상동작을 하는데, 뭔가 최초 이후엔 예전 데이터를 내뱉거나(최대 12시간정도 된것 같다) 여튼 그런 오래된 데이터가 노출되거나 update쿼리가 제대로 반영 안되는 문제가 있었다. vercel 대시보드에서 query를 실행하면 제대로 작동하고, 실제 내 앱에서 호출을 했을때 문제가 있었다. @vercel/postgres 관련해서 검색을 뭐라해야할지도 모르겠고....

프로그래머스 코딩테스트

[프로그래머스] 콜라 문제 - 자바스크립트

문제 설명 오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다. 정답은 아무에게도 말하지 마세요. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 문제를 풀던 상빈이는 콜라 문제의 완벽한 해답을 찾았습니다. 상빈이가 푼 방법은 아래 그림과 같습니다. 우선 콜라 빈 병 20병을 가져가서 10병을 받습니다. 받은 10병을 모두 마신 뒤, 가져가서 5병을 받습니다. 5병 중 4병을 모두 마신 뒤 가져가서 2병을 받고, 또 2병을 모두 마신 뒤 가져가서 1병을 받습니다. 받은 1병과 5병을 받았을 때 남은 1병을 모두 마신 뒤 가져가면 1병을 또 받을 수 있..

프로그래머스 코딩테스트

[프로그래머스] 햄버거 만들기 - 자바스크립트

문제 설명 햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, 빵 – 야채 – 고기 - 빵)로 쌓인 햄버거만 포장을 합니다. 상수는 손이 굉장히 빠르기 때문에 상수가 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없으며, 재료의 높이는 무시하여 재료가 높이 쌓여서 일이 힘들어지는 경우는 없습니다. 예를 들어, 상수의 앞에 쌓이는 재료의 순서가 [야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵]일 때, 상수는 여섯 번째 재료가 쌓였을 때,..

프로그래머스 코딩테스트

[프로그래머스] 정수 제곱근 판별 - 자바스크립트

문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 n return 121 144 3 -1 풀이 const solution = (n) => Number.isInteger(Math.sqrt(n)) ? (Math.sqrt(n) + 1)**2 : -1; Number.isInterger()로 정수 여부를 판단할 수 있다. Math.sqrt로 루트를 씌울 수 있다. => 루트 n이 정수라면 n은 어떤 양의정수의 제곱이므로, Math.sqrt(n) +..

프로그래머스 코딩테스트

[프로그래머스] 바탕화면 정리 - 자바스크립트

문제 설명 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 (0, 0)으로 시작해 (세로 좌표, 가로 좌표)로 표현합니다. 빈칸은 ".", 파일이 있는 칸은 "#"의 값을..

프로그래머스 코딩테스트

[프로그래머스] 다리를 지나는 트럭 - 자바스크립트

문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4 [7] [4,5..

프로그래머스 코딩테스트

[프로그래머스] 프로세스 - 자바스크립트

문제 설명 운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다. 1. 실행 대기 큐(Queue)에서 대기 중인 프로세스 하나를 꺼냅니다. 2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다. 3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다. 3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다. 예를 들어 프로세스 4개 [A, B, C, D]가 순서대로 실행 대기 큐에 들어있고, 우선순위가 [2, 1, 3, 2]라면 [C, D, A, B] 순으로 실행하게 됩니다. ..

프로그래머스 코딩테스트

[프로그래머스] 올바른 괄호 - 자바스크립트

문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()"는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 제한사항 s answer "()()" true "(())()" true ")()(" false "(()(" false 풀이 스택&큐 파..

프로그래머스 코딩테스트

[프로그래머스] 기능개발 - 자바스크립트

문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100% 일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자..

프로그래머스 코딩테스트

[프로그래머스] 소수 찾기 - 자바스크립트

문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 numbers return "17" 3 "011" 2 풀이 수학.. 수학에서도 순열&조합을 알아야 수월하게 풀 수 있는 문제였던것 같다. const getPermutations = (data,le..

프로그래머스 코딩테스트

[프로그래머스] 둘만의 암호 - 자바스크립트

문제 설명 두 문자열 s와 skip, 그리고 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다. 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줍니다. index만큼의 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아갑니다. skip에 있는 알파벳은 제외하고 건너뜁니다. 예를 들어 s = "aukks", skip = "wbqd", index = 5일 때, a에서 5만큼 뒤에 있는 알파벳은 f지만 [b, c, d, e, f]에서 'b'와 'd'는 skip에 포함되므로 세지 않습니다. 따라서 'b', 'd'를 제외하고 'a'에서 5만큼 뒤에 있는 알파벳은 [c, e, f, g, h] 순서에 의해 'h'가 됩니다. 나머지 "ukks" 또한 위 ..

프로그래머스 코딩테스트

[프로그래머스] 문자열 나누기 - 자바스크립트

문제 설명 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요. ..

프로그래머스 코딩테스트

[프로그래머스] 삼각형의 완성조건 (2) - 자바스크립트

문제 설명 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 sides의 원소는 자연수입니다. sides의 길이는 2입니다. 1 ≤ sides의 원소 ≤ 1,000 풀이 const solution = (sides) => { sides.sort((a,b) => b-a); const min = sides[0] - sides[1] + 1; const max = sides[0] + sides[1]; let side = 0; for(let i =..

프로그래머스 코딩테스트

[프로그래머스] 숨어있는 숫자의 덧셈 (2) - 자바스크립트

문제 설명 문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_string의 길이 ≤ 1,000 1 ≤ my_string 안의 자연수 ≤ 1000 연속된 수는 하나의 숫자로 간주합니다. 000123과 같이 0이 선행하는 경우는 없습니다. 문자열에 자연수가 없는 경우 0을 return 해주세요. 풀이 const solution = (my_string) => my_string .split(/[a-zA-Z]/g) .reduce((acc, cur) => return acc += +cur, 0); split() 매서드를 정규식과 같이 활..

프로그래머스 코딩테스트

[프로그래머스] 최댓값 만들기 (2) - 자바스크립트

문제 설명 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요. 제한사항 -10,000 ≤ numbers의 원소 ≤ 10,000 2 ≤ numbers 의 길이 ≤ 100 풀이 const solution = (numbers) => { const positive = numbers.filter(el => el >= 0).sort((a,b) => b-a); const negative = numbers.filter(el => el b-a); if(positive.length === 1 && negative.length === 1) return positive[0] * negative[0]; const..

프로그래머스 코딩테스트

[프로그래머스] 이진수 더하기 - 자바스크립트

문제 설명 이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요. 제한사항 return 값은 이진수를 의미하는 문자열입니다. 1 ≤ bin1, bin2의 길이 ≤ 10 bin1과 bin2는 0과 1로만 이루어져 있습니다. bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다. 풀이 const solution = (bin1, bin2) => (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2); 이렇게 푸는게 맞나?.. 싶긴해서 다른 사람의 풀이를 봤는데, 역시나 이렇게 풀꺼면 문제 안냈죠~ vs 레벨 0 테스트고, 사용 매서드 제한이 없는데 저게 맞지 파로 갈..

튜토리얼

[JS] 룰렛 만들기

개요 38가지 자바스크립트 튜토리얼에서 갑자기 뜬금포로 플랫포머 게임 만들기가 나와버려서.. 해당건은 진행 안하는걸루 ^^.. 포스트 한 5개분량은 써야될것 같아서, 추후 시간이 나면 진행하는걸로 결정했다. 그런고로 이번에는 요즘 회사에서 진행하는 프로젝트중 이벤트 페이지에 들어가는 룰렛 기능을 작업했었는데, 그 룰렛을 만드는 법에 대한 튜토리얼을 작성해보려고 한다. 역시나 완성본 링크부터 공유를 하고 시작을 하겠다. https://mooky1007.github.io/roulette/ Roulette mooky1007.github.io 아, 룰렛의 이미지는 그냥 구글에서 검색해서 아무거나 나온걸로 쓴건데.. 만약 문제가 된다면 댓글남겨주시면 바로 교체하도록 하겠습니다~ 이번 룰렛 개발 작업의 주요 요청 ..

프로그래머스 코딩테스트

[프로그래머스] A로 B 만들기 - 자바스크립트

문제 설명 문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요. 제한사항 0

프로그래머스 코딩테스트

[프로그래머스] 외계어 사전 - 자바스크립트

문제 설명 PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요. 제한사항 spell과 dic의 원소는 알파벳 소문자로만 이루어져있습니다. 2 ≤ spell의 크기 ≤ 10 spell의 원소의 길이는 1입니다. 1 ≤ dic의 크기 ≤ 10 1 ≤ dic의 원소의 길이 ≤ 10 spell의 원소를 모두 사용해 단어를 만들어야 합니다. spell의 원소를 모두 사용해 만들 수 있는 단어는 dic에 두 개 이상 존재하지 않습니다...

프로그래머스 코딩테스트

[프로그래머스] 직사각형 넓이 구하기 - 자바스크립트

문제 설명 2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요. 제한사항 dots의 길이 = 4 dots의 원소의 길이 = 2 -256

프로그래머스 코딩테스트

[프로그래머스] 종이 자르기 - 자바스크립트

문제 설명 머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다. 정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요. 제한사항 0 (M*N)-1; 주어진 가로, 세로가 M, N이니까 가로부터 길게 쭉쭉 자른다고 치면, M - 1 번의 가위질이 필요하다. 그렇게 해서 나온 M개의 종이에 N-1 만큼의 가위질을 해야한다. 즉 가로로 자르는 가위질의 수 : M-1 세로로 자르는 가위질의 수 : M*(N-1)..

프로그래머스 코딩테스트

[프로그래머스] 문자열 정렬하기 (2) - 자바스크립트

문제 설명 영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 제한사항 0

프로그래머스 코딩테스트

[프로그래머스] 제곱수 판별하기 - 자바스크립트

문제 설명 어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 1,000,000 풀이 const solution = (n) => Number.isInteger(Math.sqrt(n)) ? 1 : 2; 제곱수를 풀어내는 Math.sqrt() 매서드와, 정수 여부를 판단해주는 Number.isInterger() 매서드를 알고 있으면 한줄로 풀어낼 수 있다. sqrt는 square root의 약자로 루트를 계산해준다고 생각하면 편하다. Number.isInterger()은 실무에서는 거의 안쓰이기는 하지만, 알아두면 언젠간 쓸일이 있을것 같다.

프로그래머스 코딩테스트

[프로그래머스] 문자열안에 문자열 - 자바스크립트

문제 설명 문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ str1의 길이 ≤ 100 1 ≤ str2의 길이 ≤ 100 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다. 풀이 const solution = (str1, str2) => str1.includes(str2) ? 1 : 2; // or const solution = (str1, str2) => str1.indexOf(str2) !== -1 ? 1 : 2; 배열 내 원소의 존재 유무를 체크하는 방법을 알면 한번에 풀 수 있는 문제로, indexOf() 혹은 includes() 매서드를 활용하면 한줄로 풀어낼 수 ..

프로그래머스 코딩테스트

[프로그래머스] 캐릭터의 좌표 - 자바스크립트

문제 설명 머쓱이는 RPG게임을 하고 있습니다. 게임에는 up, down, left, right 방향키가 있으며 각 키를 누르면 위, 아래, 왼쪽, 오른쪽으로 한 칸씩 이동합니다. 예를 들어 [0,0]에서 up을 누른다면 캐릭터의 좌표는 [0, 1], down을 누른다면 [0, -1], left를 누른다면 [-1, 0], right를 누른다면 [1, 0]입니다. 머쓱이가 입력한 방향키의 배열 keyinput와 맵의 크기 board이 매개변수로 주어집니다. 캐릭터는 항상 [0,0]에서 시작할 때 키 입력이 모두 끝난 뒤에 캐릭터의 좌표 [x, y]를 return하도록 solution 함수를 완성해주세요. [0, 0]은 board의 정 중앙에 위치합니다. 예를 들어 board의 가로 크기가 9라면 캐릭터는 ..

프로그래머스 코딩테스트

[프로그래머스] k의 개수 - 자바스크립트

문제 설명 1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ i { let count = 0; for(let start = i; start el.includes(k) && count ++); } return count; } 그냥 간단하게 생각하고 풀기로 했다. i부터 j까지 k가 몇번 등장하는지 등장 횟수를 구해주면 되는 문제라 우선 for문으로 i부터 j까지 반복문을 돌리기로 했고, 이후 해당 숫자를 문자열로 변경한 뒤 split() 매서드로 글자글자마다 쪼개주었다. 첫 답변 제출 시에는 split()은 따..

프로그래머스 코딩테스트

[프로그래머스] 로그인 성공? - 자바스크립트

문제 설명 머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요. 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다. 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다. 제한사항 회원들의 아이디는 문자열입니다. 회원들의 아이디는 알파벳 소문자와 숫자로만 이루어져 있습니다. 회원들의 패스워드는 숫자로 구성된 문자열입니다. 회원들의 비밀번호는 같을 수 있지만..

FE Dev. 은옥
'분류 전체보기' 카테고리의 글 목록