slice()와 padStart()를 사용해서 핸드폰 번호의 일부를 가리기
if문, for문, push를 이용해서 배열에서 연속되는 원소를 제거하기
Number()를 사용해서 문자열을 정수로 바꾸기
slice 함수를 이용해서 짝수 길이의 문자열에서 가운데 두 글자 가져오기
reduce를 이용해서 배열의 각 요소들의 평균값 구하기
이상한 문자 만들기 솔루션
String과 toString() 차이, 자연수 뒤집어 배열로 만들기
문제 설명 > 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 > x는 1 이상, 10000 이하인 정수입니다. 초...
Set, 두 개의 합 경우의 수 구하기
sqrt, pow, isInteger
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.a / b / return3 / 5 / 123 / 3 / 3
splice, for-in, 해시 알고리즘
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...2번 수포자가 찍는
\[폰켓몬]당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따
JS에서 허용하는 수의 범위, 나머지 연산자의 덧셈
문자열 메서드첫번째 인자의 데이터를 두번째 인자의 데이터로 변경한다.가장 앞에 있는 데이터만 변경한다!첫번째 인자의 데이터를 두번째 인자의 데이터로 변경한다.일치하는 모든 데이터를 변경한다.(프로그래머스는 replaceAll을 지원하지 않는다.)\[숫자 문자열과 영단어
반환: 배열 내의 요소의 최초의 인덱스. 발견되지 않으면 -1.\[체육복](https://programmers.co.kr/learn/courses/30/lessons/42862문제 설명점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌
substring(), indexOf(), charCodeAt(), fromCharCode()
arr.sort((a, b) => a - b);arr.indexOf(찾을 요소\[, 인덱스])배열의 뒤부터(오른쪽에서 왼쪽으로) 탐색해서 일치하는 요소의 인덱스를 반환한다.arr.lastIndexOf(찾을 요소\[, 인덱스])두번째 인자를 넣으면 두번째 인자번째부터 앞
filter, while
\[크레인 인형뽑기 게임](https://programmers.co.kr/learn/courses/30/lessons/64061for문에서 break 활용하기!!!!!!!!!!반복문이 계속해서 실행되지 않도록 하는 스위치 변수 활용하기!!!!!!!!!!
자기 자신을 계속해서 반복하는 함수원하는 결과가 나올 때까지 무한하게 반복한다.while 문법을 대체할 수 있다.\[이진 변환 반복하기]0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다.x의 모든 0을 제거합니다.x의 길이를 c라고 하면,
toString() 매개변수를 넣어주면 해당하는 진법으로 바꿔준다. parseInt() 두번째 인자로 현재 진법을 넣어주면 십진법으로 바꿔준다. [3진법 뒤집기] 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표
\[비밀지도]네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.지도는 한 변의 길이
다트 게임카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다.갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을
알고리즘의 성능을 수학적으로 표현해주는 표기법 시간 복잡도, 공간 복잡도 O(1), O(n), O(n^2), O(2^n), O(log n)
[신규 아이디 추천] 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를
\[백준 1929번 소수 구하기]시간 제한 2초, 메모리 제한 256MBM이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상
n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 1, 1, 1, 1, 1로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.\-1+1+1+1+1 = 3\+1-1+1+1+1 = 3\
드디어 dfs 문제를 푸는 데 성공했다 😘
모든 공항은 알파벳 대문자 3글자로 이루어집니다.주어진 공항 수는 3개 이상 10,000개 이하입니다.tickets의 각 행 a, b는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다.주어진 항공권은 모두 사용해야 합니다.만일 가능한 경로가 2개 이상일 경우
7번의 시도 끝에 성공...😵BFS와 DFS 모두 모든 정점을 방문한다는 것은 동일하지만, 각각 방문하는 경로가 다르다.DFS는 현재 정점과 연결된 정점 중 한 정점에만 방문할 수 있다.단, 방문할 수 있는 정점들의 모든 경우의 수를 방문해봐야 한다. (1과 연결된
명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니
문자열 순서 뒤집는 방법 상수 답
숫자가 주어졌을 때, 각 자리의 수를 구하려면숫자를 문자열로 바꾸고 문자열 = str(숫자)문자열\[0]처럼 각 인덱스에 접근해도 되지만,이렇게 분리한 각 자릿수로 사칙연산을 하려면 또 int로 변환해줘야 한다.아주 귀찮음..🤮숫자 상태에서 타입 변환 없이 계산을 통
소수 찾기: 배수 제거 방식 소수를 찾을 때 에라토스테네스의 체를 이용하는 방법보다 더 빠르게 찾을 수 있는 방법이 있다. 1부터 소수를 찾아나가면서, 배수를 지워버리는 방법이다. 숫자의 배수들은 소수가 아니므로, 소수인지 검증하기 위해 다른 숫자들로 나눠볼 필요가
가로 세로 각각 처음 점, 끝 점, 잘린 점들을 담을 배열을 만든다.점들을 담은 후 오름차순으로 정렬한다.🤔Why? 다음 단계에서 점들의 간격을 구할 건데, 연속되는 점들의 간격을 구해야 하므로 정렬을 먼저 수행한다.가로 세로 배열에서 요소들의 간격들을 각각 구하고,
위가 itertools, 아래가 재귀함수 사용한 코드이다.itertools 쓴 게 압도적으로 빠르다..!소요 시간: 0.0166ms소요 시간: 0.0003ms약 55배 빠름 ㅋㅋ1) 순열을 만들어준다.itertools.permutations2) 배열의 요소를 합쳐서 문
전체 코드퀸은 모든 행, 열, 양쪽 대각선에서 홀로 위치해야 한다. (스도쿠랑 비슷?!🙂)인자로 열의 index를 0부터 차례대로 받고, 몇번째 행 index에 들어갈 수 있는지 찾는 함수를 만든다.반복문을 통해 0부터 N-1까지 행 중에서 1) 퀸이 놓이지 않은 행
전체 코드문제에서 주어진 정보는, 어떤 크기의 표가 주어지는지와 행과 열의 인덱스이다.이것들을 활용할 수 있는 규칙을 찾아야 한다.어떤 한 위치에서 행과 열에 각각 2를 곱한 위치의 값은 기존 값의 4배이다.이 규칙을 이용해서 역으로 찾아가보자!어떤 한 위치에서 행과
🚨 메모리 제한이 8M이다.전체 코드메모리 제한이 8M로 아주 작기 때문에최대한 메모리를 사용하지 않는 방법으로 풀어야 한다.정렬해야 하는 숫자가 10,000보다 작거나 같다고 정해져 있으므로,도수 정렬(계수 정렬)을 활용할 수 있다.배열을 활용하는 정렬이다.배열을
전체 코드이 문제에는 정렬 조건이 두 개가 있다.1) 길이가 짧은 것 우선2) 사전 순그리고 중복을 제거해야 한다.python의 sort 혹은 sorted를 써서 정렬할 수 있는데여기서는 sorted가 더 유용해 보인다.👉🏻 왜냐하면 중복을 제거하기 위해 set으로
전체 코드출력할 때 오름차순으로 출력해야 해서 미리 정렬을 먼저 해뒀다.합이 100이 되는 값들을 찾기 위해서역으로, 전체 데이터의 합에서 100을 뺀 값을 구하고두 원소의 합이 diff와 일치하는 값을 구할 것이다.이중 반복문을 통해두 원소의 값이 2단계에서 구한 d
전체 코드 - 1) itertools 활용전체 코드 - 2) 재귀함수위에 제출한 것이 itertools를 사용한 것아래 제출한 것이 재귀함수를 사용한 것역시 itertools를 사용한 것이 더 빠르다.
전체 코드 - 1) eval ❌ 👉🏻 eval() 함수를 안 쓰는 것이 성능에 좋다 👍🏻
[더하기 사이클]
1) 백트래킹2) itertools 활용위가 itertools 사용한 코드이다.이 문제에서는 속도 차이가 크지 않다! 👍🏻
1) 백트래킹2) itertools 활용위 코드가 itertools 활용한 것이 문제에서는 속도가 비슷하다!!
n_list의 중복을 제거하지 않으면 시간 초과가 발생해서, set으로 변환해서 중복을 제거해야 한다!!이분 탐색
이 문제에서 주어지는 나무의 길이 M이 매우매우매우 크기 때문에 메모리를 최대한 덜 사용하는 방식으로 풀어야 한다.(1 ≤ M ≤ 2,000,000,000)메모리 사용량이 많아질수록 시간 초과가 발생할 가능성이 높아진다. 메모리가 많이 사용되면, CPU가 메모리에서 데
전체 코드이진 탐색을 활용한다.각 집 간의 최소 거리와 최대 거리의 합을 구해서 그 중간값 이상의 거리에 떨어진 집에 공유기를 설치해본다.설치한 공유기의 수의 개수에 따라서 중간값을 조정해가며 반복한다.이진탐색을 하기 위해 오름차순으로 정렬한다.(이진탐색을 할 때는 오
전체 코드입력된 용액들을 정렬한 후, 양 끝단(left 포인터, right 포인터)에서부터 접근하면서 합을 계산한다.합의 절대값을 최솟값과 비교하며 최솟값보다 작아지면 최솟값을 갱신하고 결과 후보로 담아둔다.(중요한 건 최솟값보다 작아졌을 경우에만 결과에 담는 것!)용
전체 코드오름차순으로 정렬한다.최대값은 현재 가장 높은 레벨 + 올릴 수 있는 레벨인 k로 설정한다.(현재 가장 높은 레벨로 설정하면 안된다 ❌ 이미 젤 높은 레벨에도 값이 더해질 수 있으니까!!)mid가 되기 위해 올려야 하는 레벨의 총합을 구하는 함수를 만든다.di
전체 코드이분 탐색을 시작하기 전에는 항상 정렬 먼저!!동물의 x좌표만 따졌을 때 가장 가까운 사대의 인덱스를 찾는 이분 탐색 함수동물 위치 데이터를 입력 받아서 위에서 만든 함수를 호출해 가장 가까운 사대 인덱스 찾기 ㄱㄱ1에서 구한 가장 가까운 사대에서 동물 간의
[색종이 만들기] 풀이
이 문제에서 A, B, C는 모두 2,147,483,647 이하의 자연수로 주어지는데,만약 A와 B가 둘 다 2,147,483,647로 주어지면 결과는 1.215 × 10^3113863045 정도의 값이 된다.But, 파이썬에서 표현 가능한 최대 정수값은 9.22337
전체 코드곱할 횟수를 반씩 나누어 가는 분할 정복 방식으로 접근한다.곱해야 할 횟수가 홀수로 주어질 경우에는, A^2 \* A와 같은 경우가 생길 수 있어단순히 행렬을 제곱하는 방식으로는 해결할 수 없다.따라서, 제곱이 아닌 행렬 두 개 arr1과 arr2를 곱한 결과
뒤에서 아무리 큰 숫자가 나와봤자, 앞에 있는 숫자들의 개수가 지울수 있는 총 개수보다 많으면 소용이 없다. 앞에서부터 하나씩 비교해가면서 지울 수 있는 개수만큼 지워나가야 한다.👇🏻 요로케숫자를 앞에서부터 하나씩 떼어서 그 앞에 나왔던 숫자보다 큰 숫자인지 확인한
전체 코드가장 작은 묶음을 두 개씩 찾아서 더해주는 것이 가장 적게 비교하는 방법이다.가장 작은 두 묶음을 구해서 더하고, 새로 만들어진 묶음을 다시 큐에 넣는다.큐에서 또다시 제일 작은 두 묶음을 구하고 더하는 것을 반복한다.
[가운데를 말해요] 풀이 전체 코드 0. 풀이 방법 최대힙과 최소힙은 각각 내림차순과 오름차순으로 데이터를 정렬해서 저장하는 자료구조이다. 이 문제처럼 정렬된 값에서 가장 큰 값, 혹은 가장 작은 값을 구해야 할 때 아주 유용하다. 너무 맘에 든당 😍 중간값을
전체 코드사무실과 집의 위치를 대소 비교를 통해 (끝점, 시작점)으로 데이터를 입력받고, 끝점을 기준으로 오름차순으로 정렬한다.각 끝점 - 시작점이 철로의 길이와 같거나 작은 데이터들만 남긴다.남은 데이터들을 하나씩 돌면서 시작점을 heap에 담고, 돌고 있는 데이터의
주어진 데이터에서 각 원의 왼쪽 점과 오른쪽 점을 구한다.왼쪽 점 = 중심 - 반지름, 오른쪽 점 = 중심 + 반지름왼쪽 점부터 오름차순으로 정렬해서 원이 완성되는 시점에 영역의 개수를 증가시킨다.원이 하나 만들어질 때마다 원의 안/밖이 분리되어, 영역이 1 증가한다.
각 그래프 막대의 길이를 확인하여 이전의 막대보다 긴 막대기가 나오면 stack에 push한다.이전 막대보다 짧은 막대를 만나면 stack에 들어있는 막대들로 만들 수 있는 가장 큰 넓이를 구한다.stack이 비어있어서 첫번째 막대가 stack에 추가되었다.이 경우,
점이 뒤죽박죽으로 주어지니까, 일단 정렬부터 하고 보자..자 이제 최솟값 구하기 스타또-!시작점과 끝점을 인자로 받아서 분할 정복으로 풀 것이다.start와 end의 차이가 0 또는 1이 될 때까지 쪼갤거임반띵씩 줄어들다보면 같은 값이 시작점과 끝점으로 주어질 수도 있
입력받은 소수를 최소힙에 index와 함께 넣는다.힙의 pop을 이용해 작은 수부터 하나씩 꺼내올 예정!여기에 소수를 한번씩 다 곱해준다.이렇게 만들어진 수를 힙에 추가할 때도,처음에 넣을 때와 마찬가지로 곱한 소수의 인덱스를 같이 넣어준다.🚨 이렇게 그냥 곱해서 넣
전체 코드
Moo 수열이 최초의 수열인 \["m", "o", "o"]일 경우를 제외하고는수열의 총 길이는 이전 수열 길이 \* 2와 가운데 추가되는 수열의 길이로 구할 수 있다.가운데 추가되는 수열의 길이는 첫 수열이 0번째라고 했을 때, 수열의 순서 +3으로 구할 수 있다.분할
루트 -> 왼쪽 -> 오른쪽으로 주어지는 입력에서 루트 / 왼쪽 / 오른쪽을 각각 구분해서 왼쪽 -> 오른쪽 -> 루트 순서로 출력해버리쟈💡문제에서 주어진 예시를 먼저 봅시다잉루트 노드를 찍은 다음 왼쪽을 싸악 다 돌고 오른쪽을 돌고 있다!1) 루트는 처음 들어오는
😱우선,, 스패닝 트리가 무엇인지 먼저 아라보쟈!모든 노드가 연결되어 있다.사이클이 존재하지 않는다.연결되지 않은 노드가 있거나, 사이클이 존재하는 경우 신장 트리가 아니다. 최소 신장 트리 알고리즘: 신장 트리 중에서 최소 비용으로 만들 수 있는 신장트리를 찾는 알
전체 코드
연결된 뭉텅이가 몇개인지 묻는 문제이다.DFS 탐색을 수행하면, 연결된 요소를 모두 방문하게 된다.따라서, 한 요소에 대한 탐색이 종료되고 새로운 탐색이 시작된다는 것은, 연결이 끊긴 것을 의미한다.탐색이 끊기고 새롭게 시작되는 횟수를 리턴하면 된다!전체 코드
[이분 그래프] 이분 그래프 노드끼리 서로 인접하지 않은 두 집합으로 나누기 같은 색의 노드는 같은 집합이라고 치고 아래의 그림을 보자! ⭕️ 인접한 노드끼리 서로 다른 집합에 들어가게 만들 수 있으면 이분 그래프가 된다. ❌ 이렇게 인접한 노드끼리 어찌해도 다른
[아침 산책] 항상 실내에서 출발하고, 실내에서 경로를 끝낸다. 따라서 중간에 거쳐가는 실외가 몇개인지는 신경쓰지 않아도 된다. (심지어 실외가 0개인 경로도 가능하다!) 실외를 거치는 경우와 실외를 거치지 않는 경우를 하나씩 알아보자! 실외를 거치는 경우 실외
얼음인 곳을 기준으로 DFS 탐색을 한다.탐색을 하면서 현재 얼음과 맞닿아 있는 바다의 개수를 파악한다.탐색을 하면서 얼음인 곳을 만나면 얼음의 위치를 stack에 저장해두고,stack의 요소들을 기준으로 탐색을 이어간다.DFS 탐색이 한 턴 완료되면 연결된 얼음 한
[구슬찾기] 0. 풀이 방법 문제에서 주어진 무게 정보를 반대로 뒤집어서 추가 정보를 얻을 수 있다. 쓸데없는 말 싹 빼버리고~ 이 정보를 가지고 대소 관계를 정리할 수 있다.
굉장히 씹덕같지만 귀여운 문제👾 물이 차오르는 곳은 고슴이가 이동할 수 없으니물을 먼저 불리고 고슴이를 이동시킨다.고슴이와 물의 좌표를 기준으로 상하좌우를 탐색한다.상하좌우를 탐색할 때 고슴이와 물 모두 갈 수 없는 돌을 무시하고,고슴이는 가지 못하고 물은 또 갈 필
[행렬 곱셈 순서] 풀이 방법 우선 이 문제를 풀기 위해서는 행렬을 곱했을 때 연산 횟수를 구해야 한다. 1. 두 행렬의 곱 연산 횟수 구하기 행렬 1과 행렬 2의 곱셈을 해보자! 크기가 5 X 3인 행렬 1과 크기가 3 X 2인 행렬 2를 곱할 때, 연산 횟수
이 문제는 완전 똑같은 문제인 외판원 순회 2와 도시의 개수를 나타내는 N의 범위가 다르다.외판원 순회 2: (2 $\\leq$ N $\\leq$ 10) 지금 문제: (2 $\\leq$ N $\\leq$ 16)모든 경우를 전부 탐색하는 완전 탐색으로 풀이할 경우 시간
면접보는 승범이네 모든 도시에서 출발해서 모든 도시로 도착하는 다익스트라 방식으로 풀었더니 시간초과가 발생했다ㅠ^ㅠ