shift나 pop을 사용x(시간 아끼기). for문에서 i=1부터 시작'(' 만나면 count++, ')' 만나면 count--count가 음수가 되면 순서는 개나 줘버린 괄호이므로 바로 'NO' 출력 후 넘어감괄호를 모두 탐색할 때까지 count가 음수가 아니었다면
역시나 shift 사용 안 하고 for문을 i=1부터 시작뒤에 붙는 호실(roomNum)은 꼭대기 층을 고려하여 guest%height === 0 일 때는 guest/height를 한다.층(floor) 역시 꼭대기 층일 때는 height 출력padstart를 이용해 호
여기서는 sort가 필요해서 shift 사용비교할 대상만 남은 input을 sort해서 숫자들만 가지고 비교들어온 순서는 이미 정렬이 되어있으니 나이순으로만 배치해주면 됨예전에 기본 sort 사용했다가 시간 초과 떠서 병합 정렬을 찾아서 했었다. 그래서 sort만 보면
모든 문자를 소문자 혹은 대문자로 변경split을 이용해 원하는 단어로 분리length-1을 하면 원하는 알파벳의 갯수가 나오지만 여기선 갯수 비교만 하기 때문에 -1을 진행하지 않음match(/문자열/gi)문자열에서 . ,등 특수문자는 앞에 \\ 붙여줌(. \\, 등
캬~ 친절하게 설명해준답시고 if로 +/- 나눠서 return 해줬다.근데 한 줄로 끝낼 것을 세줄이나 적고 있었네^\_\_^ 그것이 불친절 한 것이다.숫자로 된 문자열 앞에 +를 붙이면 숫자로 변한다.문자열에 빼기 곱하기 나누기를 하면 숫자형으로 변하다.
세상 친절하고 섹시하게 비구조 할당을 사용했다.다만 풀면서도 저게 굳이 필요한가? 라는 생각이 들었다.a와 b 중 어떤 수가 큰지 모르기 때문에 구조분해 했었는데 Math를 이용하면 쉽게 for 안에서 선택이 가능하다.가우스의 재림...항상 까먹는 식이니 외워두자
문자열 반복을 곱하기로 구현하려 했다. 코드가 방송 자막인 줄 알았다.문자열.repeat(반복 횟수)로 문자열 반복 가능slice(-4)는 뒤에서 4번째 부터 마지막까지 추출천재분이 풀어준 replace로 뒤 4자리 빼고 \*로 변경하는 식이다.\\d는 정수를 나타내고
splice(index, 제거하고 싶은 count, 그 자리에 추가 원하는 내용)에서 '제거하고 싶은 count까지만 입력하여 값 제거그 값은 indexOf를 이용해 자리 확인하기그 자리는 또 복잡하게 sort로 역배열 하고 pop까지 진행저번에도 했지만 최솟값 최댓값
첫 매개변수가 누적값, 두 번째가 현재 계산할 값, 세 번째가 인덱스양수는 1 곱해주고, 음수는 -1 곱함
repeat(count)의 count가 정수가 아니면 버림하여 계산n%2 && '수'를 하면 +가 있기 때문에 n%2가 0일 때 수박수박0이 되어 오류
나름 정규식 찌끄려본다고 match에 정수가 아닌 문자를 찾아 검증변수에 '/정규식/'을 넣으면 정규식 타입으로 지정regex.test(문자열)로 regex에 맞는 문자열이면 true/false 반환모두 정수로 이루어진 문자열을 원하면 정수로 시작(^)를 앞에 넣어주고
!!는 값을 bool형태로 바꿔줌. 삼항연산자 할 때 개꿀Number.isInteger는 정수형인지를 bool 형태로 반환위 내용은 그냥 암기해서 자식 손자한테까지 써먹자
count는 1부터 count까지의 합이다. 따라서 가우스 공식 사용 가능제발 암기하자 n(n+1)/2
a>b라면 a%b = r(0<=r<b)일 때 a->b, b->r 이 되어 같은 과정을 반복한다.r이 1이면 a와 b의 최대공약수는 1이다.r이 0이면 a와 b의 최대공약수는 b다.최대공배수는 ab/r이다. 따라서 최대공약수가 1이라면 최소공배수는 ab다.ht
for문으로 각 index를 돌려 newArr의 마지막 요소와 비교컴퓨터가 생긴 초창기 사람들이 이렇게 풀지 않았을까 싶다.filter로 숫자와 index를 받음현재 숫자와 arr의 다음 index가 같지 않다면 return마지막 요소는 n과 undefined가 다르기
뭐에 홀렸는지 모르겠는데 왜 저렇게 map을 많이썻나 모르겠다...다시 간단하게 수정했다.처음에 문자열에서 replace를 사용하려 했으나 더 복잡해질 것 같아 배열로 처리했다.(\\w)(\\w)는 연속된 문자를 뜻한다.코드는 간단하지만 시간이 오래걸린다.
첫 줄인 if(n<3)을 안 넣으니 3보다 작은 수에서 오답이 나왔고, 추가하니 모두 정답이 되었다.string을 reverse하기 위해서는 split으로 배열 변환 후 reverse하여 join으로 합쳐야 한다.toString(n)의 n에 2~36 사이의 숫자를
값이 있다면 해당 값의 아스키코드 숫자 반환없다면 NaN 반환아스키코드를 문자열로 반환풀긴 했지만 코드가 for와 if로 도배되어 지저분하다.(사실 두 번째 코드도 지저분하다.)어차피 알파벳은 변하지 않는 상수니까 대소문자 선언해둔다.upper.includes(문자)의
2진법 string으로 바꾼 후 문자열을 다시 정수로 바꿔 서로 더함그러면 0 1 2 세가지 숫자로 이뤄진 숫자 sum이 나옴n자리 수로 만들고 앞 빈공간을 0으로 채움같은 방법을 뒤로 채우는 padEnd 함수가 있다./1|2/g 는 1과 2 모두 바꾼다는 의미 (/1
forEach로 매번 비교해서 width와 height 값을 바꿔준다. 이 글을 쓰면서도 느끼지만 코드가 너무 진부해서 쓰다 졸아버릴 것 같다reduce는 맨날 더하기만 하는 줄 알았니? 아니아니 사실 비교도 한다구~ 이런 신박한 방법을 볼 때마다 뇌가 짜릿하면서 손상
sort는 숫자에서는 return a-b로 해도 되지만, 문자열에서는 if로 묶어 0과 양의정수 혹은 음의 정수를 return 해야한다.내가 푼 풀이가 다소 복잡해보이지만 마지막에 유쾌한 반전이 있다.'a'.localeCompare('c')는 음의 정수를 반환한다.비교
replace(/ /)에는 변수가 들어갈 수 없다. 따라서 RegExp로 새로운 정규식을 생성해 주고 replace에 넣어준다.new RegExp(변수 혹은 직접 문자열 넣기, 'gi 등 조건 넣기')replace에 / / 없이 바로 (reg, 원하는 문자열)i가 숫자
Set을 생성할 때는 new Set(iterable)로 생성반복 가능한 객체(배열, 문자열, 맵 등) 가능비워두면 일반 set만 생성Set에 값을 추가할 때는 add를 넣음Set에 값 여부 판단할 때는 has 사용. bool 반환따라서 마지막에 ...answer로 배열
객체의 값을 가져오거나 설정할 때 점(.)을 이용하는 방법도 있고, 대괄호를 이용하는 방법도 있다.Object'1' === Object1숫자는 점(.)으로 표현하기 어려우므로 대괄호를 이용하자물론 둘의 시간은 비슷하다. 그니까 예쁜 거 쓰자^\_^
나름 시간 줄인다고 2부터 시작하는 창의력을 보였지만 숲도 아니고 나무도 아니고 엽록소만 현미경으로 보는 정도의 창의력이었다.수가 커질수록 시간 복잡도가 O(n)이라 초과가 뜸자신의 절반 이상부터는 나눌수가 없다. 따라서 n/2까지만 나머지가 0이 되는지 구한다.이 또
코드를 작성하며 뭔가 더 좋은 방법이 있을텐데 고민을 많이 했다. 하지만 기억나지 않았다. 내 나름 찝찝하게 코드 제출하고 남 코드를 봤는데 다들 비슷했다. 기분이 좋기도 했지만 한 편으론 문제의 본질보단 어떻게든 줄이는 데에만 열중하지 않았나 하는 생각이 든다!ind
다른 방법이 있을 줄 알았지만 삼중for문만이 답이었다...시간 오래걸릴 것 같아서 무서웠는데 다행히 통과!처음에 Array가 아닌 Set을 이용하여 했다.(중복 제거해야하는 줄 앎)Array.length처럼 Set.size를 하면 길이가 나온다.
시작정점에서부터 인접해 있는 노드를 우선으로 탐색하는 방법두 개의 큐를 사용주로 최단거리를 구하는 문제에 사용시작정점에서부터 해당 분기를 전부 탐색 한 후 다음 분기를 탐색하는 방법한개의 큐, 한개의 스택을 사용주로 경로의 존재 여부를 판별하는 문제에 사용https&#
get 할 때 시간 복잡도가 O(1)이라 생각해서 객체로 줬더니 짧은 식보다 조금 더 빨라서 겁나게 뿌듯하다^^다만 식을 쓸 때 조금 더 간추릴 수 있는 방법을 찾아 줄여보자
그림판으로 대진표를 그려보니 Math.ceil(a/2)끼리 대진이 일어남그리고 이긴 숫자가 위로 올라가 같은 루틴 반복a와 b가 같아지면 서로 매칭이 있는 날이라구~
두 수의 최대공약수를 구하는 유클리드 호제법 사용사실 이거 사용하면 큰 숫자 갔을 때 시간 초과 뜰 줄 알았는데 안 떴다!!!!!두 수의 곱 / 최대공약수 = 최소공배수
구하려는 수가 짝수면 2로 나누고, 홀수면 -1을 하고 건전지 소모1까지 오면 ans에 1을 더해 출력결국 우리는 계속 2로 나누는 동작을 반복한다!!그럼 2진수로 나누고 나머지가 1이 나오는 애들의 길이가 정답이겠네요??!?!?!n.toString(2)로 이진수로 만
1단계 괄호 회전하기랑 비슷해서 여유부리다 겁나 오래걸린 문제처음에 switch 문을 이용해 ( ) { } 이 세개의 괄호가 잘 닫혔는지만 확인테스트 14 너 외않되????괄호 닫는 거만 신경 쓰다 보니 쌓인 괄호 신경을 못 썼다구~( { ) } 이거 어쩔거??다시
어릴 때 내가 기탄수학 겁나 풀었음. 나름 암산왕이라고 생각하고 이거 암산으로 풀려고 했다가 뇌가 런타임 에러나면서 머리 빠지는데 프로그래머스 탈모약 지원해주냐?사실 암산왕이 아니었던 거임....ㅠㅠㅠㅠ일단 산뜻하게 삼중 for문으로 시작했어요.학창시절 수면 공부법을
이 방법 알아야해!!!!난 항상 if문 써서 값 없으면 1 넣곤 했는데 이걸 한 줄에 넣을 수 있네 진짜 난리난리나객체로 값 카운트 할 때ans안녕 난 객체 프로퍼티야 = (ans안녕 난 객체 프로퍼티야 || 0) + 1위 처럼 하면 값 없다? 그럼 0+1이고 있으면
전 예전부터 리듀스 사용이 그렇게 어렵더라고요하지만 이거 알면 줄 길어질 거 한 줄에 해결 가능하고 for 다음 수준으로 reduce 겁나 빨라 우사인볼트야 그냥forEach에서 if 쓸 때부터 뭔가 찝찝했는데 어째 내 뇌 용량이 저기까지인걸ㅎㅎㅎreduce를 보고 바
저는 사실 이중배열 만들고 이중 for문을 이용해 배열 숫자 다 적어줬어요ㅎㅎ 근데 런타임 에러시간초과가 아니고 런타임 에러였지만 당황하지 않았어요바로 원하는 구간만 넣었는데 런타임에러^\_\_^몇 개는 맞고 몇 개는 런타임 에러면 나보고 어째(0, 0) (0, 1)
사실 이 문제는 손도 제대로 못 댄 문제다!!!! 하지만 기 죽지 않고 열심히 풀이해보겠다!!!이 풀이 만든사람 진심 아인슈타인인가요? location을 돌려버릴 생각을 하시네...각 요소가 최댓값인지 확인 후 location이 0일 때 총 횟수를 반환해요그리고 돌 때
진짜 정석 루트대로 갔어요!! 정석 맞나? 변수 겁나 많은거 봐 우웩소문자로 만들고! 2개 씩 자르고! 영어만 남기고! 중복인 애들 몇 개 있나 찾고! 그 외 기타 등등진짜 멋있는 건 나 함수를 사용해 버렸어요!ㅎㅎㅎㅎ 반복이 많아서 함수로 리팩토링까지 했어요그렇게 해
첫 for는 더할 길이두 번째는 시작할 자리세 번재 포문은 더할 요소들성공은 했으나 3중 포문부터 이미 겁나 찝찝하죠?이거를 펼쳐서 한 줄 더 합치면...이중 포문으로 해결 가능3중 포문일 때는 한 자리씩 더할 때! 두 자리씩 더할 때! 였는데 여기서는 시작자리를 기준
어떤 알고리즘인지도 알고, 코드도 아는데 활용을 어떻게 하는지 항상 몰랐어요! 하지만 이제 알았쬬오오오오오!!! 이 문제 솔직히 못 풀었는데 배웠다는 것만으로도 구글이 바라는 인재가 아닐까요?^\_\_^깊이우선 탐색은 root 노드부터 시작해 왼쪽 끝까지 들어갔다가 올
사실 못 풀었다^\_^재귀함수로 기깔나게 풀려고 했는데 무한루프가 걸리고 왜 무한루프인지 루돌프인지 정신이 나갈 것 같아 힌트를 얻었어요!reduce를 잘 사용하시네....저는 reduce와 아직 어사라 조금씩 친해지는 시간을 가져볼게요acc + cur이 딕셔너리에 없
큰 계산을 작은 계산들로 쪼개서 푸는 방법이라고 이해했어요!피보나치나 DFS에서 재귀함수로 풀다보면 fibonacci(3)을 몇 번씩이나 계산하는 불상사가 생겨요! 이해가 안 가신다구요? 당여하죠 저도 이해를 겨우 해서 여기에 쓰는데 이글이 이해가 갈리가 없죠 ㅎㅎㅎ암
최단거리는 BFS로 푼다!!!!!!!!!!!!!!암기암기암기암기while 조건으로 queue길이가 0일 때다음으로 지나갈 곳이 없으면 queue.push가 발생하지 않아 queue는 텅텅 비어요shift를 이용하면 두 갈래 길이 나와 갈라지더라도 각각 한 번씩 진행돼요
계산해보면 알겠지만 이 문제는 사실 피보나치에요....몇 개 그려볼걸...1개일 때는 한 가지 2개일 때는 두 가지니까 첫 배열에 넣어줘요그 이후 DP를 이용한 풀이를 보여주는데 역시 저는 bottom-up이 더 깔끔해서(사실 재귀함수는 아직 어려워서^^) 반복문으로
길이 만큼의 배열을 만들고 트럭이 없으면 0으로 채워요total보다 작으면 트럭 집어 넣고, 아니면 0 집어넣어요맨 앞 트럭 다 지나갈 때까지 기다려줘요!한 칸씩만 진행되어 트럭이 들어갈 수 없을 때 시간 허비가 커요time을 컨트롤 하는 닥터스트레인지time = qu
ans = Array.fill을 이용해 -1을 채워요! 레벨 2에서는 Array(len).fill()이 자주 보이네요for문을 이용해 numbers를 돌아요~while문으로 하나하나 검증해요!stack의 제일 바깥은 바로 이전 idx겠죠?그 수가 numbersi보다 작
나는 5중 포문까지 갈 뻔한 거 정신줄 잡았는데 겁나 쉽게 푸네 이게 나라냐!!!!!!!!!저는 처음에 0과 1 개수를 미리 구했는데 거기서만 시간 엄청 잡아먹더라구요사각형 첫 index의 값을 target으로 잡아요이후 half를 이용해 계산해야하니 미리 선언해둬요!
나름 머리 써서 y에서 x로 돌아가는 방법으로 풀었어요! (현재 숫자가 2나 3으로 나누어 떨어지지 않으면 절차를 생략해도 되니까요!) 진짜 어쩜 이렇게 똑똑할까물론 시간초과구요~dp를 만들어 두고, 숫자가 지날 때마다 그 숫자 속성에 이전 move count에서 +1
number의 범위를 보면 100만원이다. 내 노트북 두 대값이 말은 이중으로 O(n^2)나오는 순간 시간초과라는 것(물론 전 이렇게 풀고 시간초과ㅎㅎ)앞에서부터 한 자리씩 보면서 ans라는 스택에 넣어줘요앞자리일 수록 커야대니까 k를 다 사용하더라도 앞을 큰 수로 넣
n이 5천만이니까 O(n)나왔다 하면 커트!!!그러거나 말거나 아직 코린이인 나는 맘대로 코드를 짰고, 2개인가 맞고 다 시간초과가 났다ㅎㅎ3으로 나눠지는 수는 마지막 자리가 4고 몫에 -1을 해주면 된다!!3의 배수가 아닌 수들은 % 결과를 그대로 반영해주면 된다!미
일단 배열을 만들어요! 요새 자주했죠 Array(i).fill(0) fill은 마음대로 채우면 돼요! 그것이 feel이니까dir를 설정해줘서 막히는 곳이 나왔을 때 방향을 바꿔줘야 해요!여기서 주의할 점은 'u'일 때 x와 y를 모두 -1 해줘야 한다는 것!그래서 'r
역시 여기도 100만원이죠? 근데 저는 처음에 slice를 활용했어요! 이러면 안 됩니다!!!!dp를 이용해서 풀어주세요Set과 dp 객체를 만들어줘요!ans는 답이고, check는 새로운 종류가 들어왔을 때 +1 해줘요한 번 돌아봅시다!!!돌면서 dpt가 있으면 +1
조합으로 모든 경우를 구하고 나온 값들을 obj에 넣어요!그 중 가장 큰 수를 뽑아서 그 수와 일치하는 값을 ans.push해요!string을 배열로 바꿨다가 또 join을 하려니 조금 오래 걸리더라구요그래서 매개변수로 fixed를 추가해 join 없이 완성했어요!ht
큐가 없어 shift와 push를 이용해 풀어야해요! 근데 그러면 시간 초과가 나겠죠? 제가 시간 초과 났어요!!!여기서는 두 큐의 길이가 같은 특징을 이용해 두 큐를 붙여 계산하였어요!탈출 조건이 사실 세뇌시켜서 이해한 거지 확실히 이해는 가지 않아요...두 큐를 서
처음에는 match로 다 구하고 그 배열을 이용해 변환했어요. 아무리봐도... 복잡해보여요reduce 두 번째 매개변수에 단어만 올 줄 알았는데 콜백함수 뭐야? 나 진짜 놀랬잖아 ㅎㅎㅎㅎ이렇게 편한 기능을 이제야 알다니!!!!날짜를 구할 때는 시간만 적어주면 안 되고
https://school.programmers.co.kr/learn/courses/30/lessons/77485행렬의 회전이나 이동은 항상 switch를 이용해 풀었어요!방향과 첫 값을 저장해주고, min 혹은 max에 닿으면 방향을 바꿔줘요.선언이 많고,
https://school.programmers.co.kr/learn/courses/30/lessons/12936처음에 순열로 풀었다가 시간초과 뜨더라구요^\_^위 규칙을 이용해 fac을 length 이전까지만 구해줘요!idx는 배열의 인덱스니까 Math.ce
https://school.programmers.co.kr/learn/courses/30/lessons/86971Map이나 객체를 이용해 연결된 전선을 배열로 넣어요!저는 객체가 편해서 객체로 고고wires에서 하나씩 끊는데 visited를 사용하여 끊어진 부
https://school.programmers.co.kr/learn/courses/30/lessons/12978주로 최단거리를 구할 때 사용한다. (네비게이션 등)이런 그림 나왔다 하면 다익스트라 생각하면 된다.ans를 미친 무한 수로 N의 개수만큼 저장나중
https://school.programmers.co.kr/learn/courses/30/lessons/148653DFS나 BFS 뭐로 풀든 상관 없다. 하지만 난 DFS가 더 편해서 이거로 풀었다.모든 경우의 수를 계산해서 최솟값을 return 하면 된다.d
https://school.programmers.co.kr/learn/courses/30/lessons/62048remainder는 a%b이고, 0일 때 b를 return한다.그렇지 않으면 gcd를 무한 반복하는데 매개변수로 b와 remainder를 넘긴다.a
https://school.programmers.co.kr/learn/courses/30/lessons/155651시간 문제가 나오면 가장 낮은 단위로 통일 하는게 좋다.나는 저기서 뻘짓 한다고 split으로 나누고 각각 계산해서 다시 넣어주고 뭐 암튼 그래서
https://school.programmers.co.kr/learn/courses/30/lessons/135807a는 b가 되고, b는 a%b를 한 값이 된다.마지막에 나오는 값이 최대공약수여기서 멍청하게 생각한 것이....최대공약수의 모든 약수를 구해서 넣
https://school.programmers.co.kr/learn/courses/30/lessons/60057s의 절반길이까지만 체크난 자릿수 체크를 하지 않고 항상 1의 자리로 계산했다.실패하는 테스크 케이스가 10의 자리 100의 자리까지 반복된다는 것
https://school.programmers.co.kr/learn/courses/30/lessons/12946피보나치처럼 dp로 풀었다.c는 current로 이동을 시작할 막대기t는 target으로 옮겨질 막대기l은 last로 그냥 나머지다.2개일 때의 패
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12923 코드