코드 카타 2일차. 코드 카타는 알고리즘 문제를 풀면서 컴퓨팅 사고와 문제 해결 역량을 기르는 데 도움이 된다. 또한 코딩 테스트를 풀기 위한 역량도 기를 수 있다.코딩 테스트는 문제를 이해한게 맞는지의 이해력 능력과 문제 해결 능력을 파악한다. 코딩 테스트는 Driv
프로그래머스를 다시 레벨 1단계부터 다시 풀어보도록 할 예정이다.원래 알고리즘 이런 것에는 프론트엔드이기 때문에 관심도 없었는데 일을 하면서 리팩토링을 진행할때 코드를 더 간단하고 성능을 좋게하기 위해서는알고리즘에 대한 지식도 필요하다는 것을 알게 되었다. 틈틈히 알고
프로그래머스 레벨 1 단계 문제 2번째 !
주어진 숫자의 각 자리 수를 분리하여서 더한 결과를 리턴 하는 것이었다.
없는 숫자 더하기 0~9 사이의 숫자가 랜덤의 위치로 랜덤 배열로 주어진다
2016년도의 요일을 구하는 것이다.
평균 구하기 arr이가 주어지고 arr의 값들의 합을 구한후에 평균을 구하면 되는 문제이다.
문제 : 값이 주어지는데 만약 그 값이 양의 정수의 제곱이라면 x+1 의 제곱을 리턴하고 아닐시에는 -1을 리턴한다 몇가지 공식만 알면 쉽게 풀수 있는 문제라고 생각했다.
콜라츠라는 사람이 주어진 수가 1이 될때까지 다음 작업을 반복하면 모든 수를 1로 만들 수 있다는 추측이다.
프로그래머스 레벨1 3페이지의 배열을 사용하지 문제는 거의다 푼것 같다. 차곡차곡 하나씩 문제푼것들이 채워져 나가는게 보기가 좋다
가장 큰 수. 정렬 문제이다. 정렬을 아직 확실히 이해하지 못하여서 어렵게 생각한다. 하지만 출제율이 상당이 높단다
문제를 봐도 이해가 안되어서 문제에 대한 힌트만 보려고 검색하게 되었다. 문제의 해석을 봐도 잘 이해가 안되었고 내가 이해한 방식대로 문제를 푸니까 맞았다. 내가 이해한 문제 해석이다. 일단 내림차순으로 정렬을 한다. 쭉 나열된 배열에서 인덱스+1과 요소들을 비교를 해서 인덱스+1 보다 요소들이 큰 값을 세는 것이다. 즉, 논문의 개수 중에서 인용 ...
어느덧 프로그래머스 2단계를 풀고 있다. 2단계 부터는 효율성까지 체크하기도 하고 문제가 좀 복잡한 부분도 있어서 확실히 어렵다..
124 나라의 숫자 규칙찾기의 문제이다. 우리는 10진법으로 숫자를 세지만 여기는 124진법(?) 이라는 것으로 숫자를 센다. 1,2,4 이 순서로 돌아간다.
이건 거의 주는 문제라고 생각한다. 레벨 1다운 문제인가 ?
두가지 정수가 주어진다. 하지만 어느것이 큰지는 모른다 그 사이의 값들을 모두 더한 값을 리턴하면 되는 문제이다
이번 문제는 짝지어 제거하기이다. 앞뒤의 문자가 같은 문제일때 제거할수있다.
기능개발을 하고 배포를 해야하는데. 배포는 한꺼번에 할수록 좋다. 각 기능들에대해서는 100%가 되면 배포가 가능한데 작업에 드는 공수는 작업마다 다르다. 배포는 그리고 순서대로 나갈수 있다.
타겟 넘버 각 숫자의 배열이 주어지고 목표 숫자가 주어진다. 배열안의 숫자를 활용하여 목표숫자를 만드는 것이다. 더하고 빼서 목표숫자를 만들면 된다. 이렇게 조합한 배열의 개수를 리턴하는 문제이다.
두 배열이 주어지고 두 배열의 인자 값들을 곱해서 누적값을 만들때 최솟값이 되도록 만들면 된다.
이번 문제는 답안을 제출했을때 효율성 테스트 까지 있었던 문제이다. 답은 맞출수 있지만 효율성으로 통과되는것이 많이 어려웠다. 대신에 이 문제에서 많은 것을 배울수 있었다.
스택과 큐 문제이다. 대기 트럭 배열과 다리의 길이, 다리가 견딜수 있는 무게가 주어진다. 다리에는 다리가 견딜수 있는 무게만큼 트럭이 올라갈수 있다.
2단계 연습문제이다. 숫자가 주어지고 숫자를 이진수로 변환 후에 변환한 이진수에서의 1개수와 비슷한 2진수를 찾은다음 그중에서 작은 숫자를 리턴하면 된다.
2018년도 카카오 블라인드 채용 문제이다. 데이터가 주어지고 이를 캐시 값에 저장을 한다. 캐시 저장소의 크기도 주어지는데 캐시에 있는 값을 불러오면 1초가 들고 새로 불러오면 5초가 소요 된다. 캐시 교체 알고리즘은 LRU 를 사용한다.
2018년도 카카오 블라인드 채용 문제이다. 방금 그곡 서비스는 방금 들었던 곡을 알려준다. 네오는 절대음감인지 기가막히게 노래의 멜로디를 들으면 음을 알수 있고 음을 기억한다.
2019년 카카오 겨울 인턴십 문제이다. 셀수 있는 수량의 순서 있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플이라고 한다. 튜플을 표현하는 집합이 담긴 문자열이 주어질때 튜플을 배열에 담아 리턴하면 된다.
해시 레벨 2 문제이다. 스파이들은 매번 옷을 바꿔입어야 한다. 배열로 옷의 종류와 옷에 대해서 알려주고 다르게 매치 할수 있는 경우의 수를 구하면된다.
숫자가 주어지면 주어진 숫자만큼 수박이라는 단어를 반복하는 문제이다
어떤 놀이기구를 타는데 인기가 많아서 금액이 탄 횟수만큼 증가한다 가격 \* 탄횟수 가 가격이 된다 만약 N번 탔을때 내가 가진 금액에서 기구를 이용할때 부족한 금액을 구해라 가 문제이다
문자열의 기본이라고 해서 문제를 풀게 되었다 .
문자열 내의 p와y의 개수를 찾는다
프로그래머스 js 실패율 레벨 1단계의 문제이다. 카카오 블라인드 테스트 2019년도 문제 이다. 시간제한이 있었으면 나름 어려웠을듯 싶다. 게임내에서 각 단계별로 남아있는 사람으로 계산하여 실패율을 계산하는 문제이다.
레벨1의 카카오 문제이다.숫자문자와 영어숫자 단어가 섞인 문자열이 주어진다.‘1oneone’ 이렇게 주어지면 숫자는 그대로 숫자로 바꾸고 영어는 숫자로 치환하여 숫자를 리턴하면된다.
주어진 배열에 중복을 제거 한 값을 리턴하는 것이다. 처음 Set()을 쓰려고 했으나 객체를 리턴해서 새로 짜게 되었다. 배열 문제를 들어가기 전에 쉬운문제로 이 문제를 골랐는데 생각보다 오래걸렸다.
조건은 문자열을 내림차순으로 배치하는 것 알파벳이 주어지는데 대신 소문자>대문자 이고 내림차순으로 정렬하면 된다.
x와 n이 주어지면 x값의 n의 배수를 구하는 것을 배열로 담는 문제였다.
정수 양수와 음수가 주어진다. 그냥 더하고 빼면 된다. 두개의 배열이 주어지는데 하나는 숫자 배열 하나는 부호가 담긴 배열이다. 모두다 더한 값을 리턴하면 된다.
길이가 같은 두 1차원 정수 배열 a,b가 매개변수로 주어진다. 내적을 구하면 되는데 내적은 각 배열을 돌면서 배열의 인덱스 값을 곱한것을 더한 값이다.
모의고사를 보는데 수포자들이 있다 3명이 있는데 각자 찍는 방법이 다르다. 매개변수로 답지가 주어지고 답지와 비교했을때 많이 맞은 사람을 담아서 리턴하면된다. 가장 많이 맞은 사람을 리턴하는데 순위가 같다면 같은 사람들 모두 리턴하면 된다
자연수가 주어지는데 3진법으로 변환하고 뒤집고 다시 10진법으로 변환하면 된다.
학생들은 번호순서대로 되어 있다. 체육복을 도둑맞은 사람에게 2개가져온 사람이 앞뒤 번호에게 빌려줄수 있는데 이때 체육복을 다 입은 학생수를 구하면된다.
포켓몬 박사에게 포켓몬을 얻어야 하는데 박사는 박사가 포켓몬을 가지고 있는 숫자의 반의 포켓몬을 준다. 포켓몬의 번호로 포켓몬을 알수 있다. 그중에서 중복의 포켓몬을 빼고 가질수 있는 포켓몬 종류를 리턴하면 된다.
두수를 받아서 두수의 최대공약수와 최소공배수를 리턴하면 된다.
내가 푼 로직이다. for문을 쓸까 하다가 배열을 리턴한다는 것에 이번에는 꼭 map함수를 써보겠다고 생각하여 map함수를 사용항여 문제를 풀었다. 몫이 0일때 answer의 배열에 넣어주었고 만약 answer 배열이 비어있으면 -1을 리턴한다
레벨 2단계 문제이다. 하나의 자연수가 주어진다. 연속된 자연수들의 합으로 그 자연수와 같은 방법을 카운트하면된다.
문자열의 배열이 주어지고 두번째 인자로 자릿수가 주어진다. 각 배열의 값들을 주어진 자릿수를 비교하여 순서를 맞추는 것이다. 단 조건은 만약 자릿수의 순서가 같다면 다음것으로 비교하는 것이다.
프로그래머스 레벨2 문제이다. 효진이는 점프를 1칸 혹은 2칸 할수 있다. 임의의 숫자가 주어질때 뛸수있는 경우의 수를 리턴하면된다.
배열이 주어지고 배열에서 아무거나 두개 뽑아서 더한 값들을 배열에 담으면 된다. 단 중복을 제거하고 오름차순으로 정렬해야 한다. 일단 하나씩 하나씩 포문을 돌려서 구해준다 배열중에 같은 것을 두번 뽑을 수 없으니 같은 자리일때는 그냥 진행한다.
괄호가 여러개주어 지는데 짝이 맞는 괄호이면 true를 아니면 false를 나타내면된다. 괄호는 순서대로 짝이 맞아야 한다. 결과적으로 문제를 풀지는 못했다.
이전에 한번 풀었던 기억이 있다. 못풀었었나?아무튼 그때 당시 어렵게 느껴졌었는데 계속 코테를 풀어서 인가 어떤 함수를 어떻게 사용해야 할지 바로 떠오르게 되었다. 배열에는 map함수 사용하기 다짐했었는데 이번에 또 사용하게 되었고 쉽게 풀수 있었다
leo는 카펫을 사러갔다 카펫은 가운데가 노랑 테두리가 갈색인데 레오는 특이하게 넓이는 안구하고갈색의 개수와 노랑의 개수를 기억하고 왔다. 테두리의 개수 갈색과 중앙의 개수 노랑이 주어질때 카펫의 가로 세로를 구하면 된다.
이건 이전에 문제를 풀었다가 실패했던 문제였는데 오래간만에 다시 풀게 되었다. 영어 끝말잇기가 있다. 끝말잇기는 다들 방법은 아니 넘어간다. 사람수와 끝말잇기 단어수가 정해졌을때 끝말잇기에서 틀린 사람의 넘버와 몇번째에서 틀렸는지를 리턴하면 되는 문제이다.
배열이 주어지고 배열에서 제일 작은 값을 제거한 배열을 리턴하면 된다. 단 빈배열일땐 -1 을 리턴하면 된다.
문자가 주어지고 문자가 왼쪽에서 오른쪽으로 읽힌다. 문자에서 중복되는 글자가 있을 경우 가장 가까운 같은 글자가 얼마만큼 떨어져 있는지를 구하면 된다.
문자열 s 는 한개 이상의 단어로 구성되어 있다. 각 단어의 짝수번째는 대문자로 , 홀수번째는 소문자로 리턴하라 단, 공백이 있을 경우 공백 그대로 노출해야 하며 (이부분이 언급되지 않아서 처음에 많이 틀렸다), 공백이 있을 경우 공백 다음이 0으로 숫자를 센다.
주어진 string 알파벳에 숫자가 주어지고 숫자만큼 알파벳을 민다. A ,1 이라면 B로 숫자를 미는 것이다. 단 공백이 주어지면 공백은 아무리 밀어도 공백이다. 대문자일 경우 대문자로 밀고 소문자일 경우 소문자로 민다.
요즘은 레벨 0이 생겨서 0을 풀어보고 있다. 레벨 0은 쉬운것은 엄청쉬워서 (사칙연산, 등 기초) 등은 굳이 벨로그에 작성하지 않았다.
알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.
기준 값과 배열이 주어진다. 기준 값으로 부터 거리가 짧은 순으로 정렬하면된다. 만약 거리가 같을 경우 큰수가 앞으로 온다.
MBTI 를 카카오 유형으로 변경한 문제이다. 카카오 코테문제 이고 레벨 1문제이다.
프로그래머스 레벨 1문제 . 문제를 이해하는데 시간이 오래걸렸다.
따끈따끈한 문제이다. 문제를 풀다가 봤는데 새로 나와서 바로 풀어봤다. 이전 오락실에서 게임후 랭킹을 매길때 이름 을 적은 기억이 있다면 쉽다.
사진이 주어진다. 매개변수로는 사람이름, 그리움 점수 , 사진속 사람들 값이 주어진다. 각 사진속 사람들에서 그리움 점수들을 더한 합계를 리턴하면된다.
달리기 경주가 열릴때 해설진들이 선수 이름을 외친다. 선수 이름을 외친이유는 그선수가 앞선수를 제쳤기 때문이다. 선수 이름을 부른 배열과 선수 배열이 주어질때 마지막 최종 순위를 리턴하면된다.
호텔을 예약할때 방 수를 최소로 하고 싶다. 호텔은 체크아웃 뒤에 10분 청소 시간이 있고 그 이후에 손님을 받을수 있다. 손님의 예약 시간이 배열로 주어질때 최소 방 개수를 구하면된다.
배열이 주어지고 배열안에는 숫자들이 있다. 배열 각 원소들이 있는데 뒤의 원소에서 가까운 큰 숫자를 찾아서 변경하면 되는 문제이다. 예) 2,3,3,5 =.> 3.5.5.-1 없으면 -1을 넣어준다. 무조건 맨뒤는 -1이다. 나는 못풀었다. 나중에 다시 한번 풀어볼 것
마법의 엘리베이터가 있다. 엘리베이터 버튼은 10의 배수 만큼 증가하고 감소한 버튼만 있다. (1,10,100,1000) 등 이때 주인공이 살고 있는 층에서 0층까지 가려고 한다. 최소 버튼을 누른 값을 구하면된다.
맵이 주어지고 로봇강아지가 있는데 명령을 준다. 명령은 방향과 거리로 주는데 맵 상에서 방향과 거리 입력값들을 파악해서 마지막 명령 이후 어디에 위치해 있는지 리턴하면된다 맵의 좌표는 좌측 상단이 (0,0) 이다.
문제 요약 메시지를 압축해야 하는데 LZW(Lempel–Ziv–Welch) 압축을 구현하기로 했다. LZW 압축은 1983년 발표된 알고리즘으로, 이미지 파일 포맷인 GIF 등 다양한 응용에서 사용되었다. LZW 압축은 다음 과정을 거친다. 길이가 1인 모든 단어를
해시 문제이다. 전화번호가 주어지고 전화번호 중에 전화번호가 접두어가 되는 것이 있다면 false를 리턴하면 된다. 접근 방법: 해시 문제라고 해서 map 을 써야 겠다 라고 생각했다. map을 단순히 사용해서 key값을 비교해서 이중 포문을 돌려보니 시간이 엄청 느
정말 오래간만에 문제를 풀었다. 레벨 1인데 kakao 문제라서 그런지 시간이 좀 소요 되었다. 문제를 쭉 읽다가 설계를 잘못해서 문제를 다시 풀었던게 컸다. 문제를 이해하는것이 진짜 진짜 중요하다. 일단 문제는 친구들 배열, 친구들이 선물을 준 목록이 배열로 준비되어
불량 사용자가 있는데 불량사용자는 아이디를 가리기 위해 \*로 몇개 가려서 나온다. 불량 사용자 리스트와 , 일반 사용자 리스트가 있을때 불량 사용자를 추측해서 경우의 수가 몇개 나오는지 리턴하면 된다. 처음에 그냥 문제를 풀었는데 for문을 3번 사용해야 해서 머리가
식이 주어지는데 연산자와 피연산자가 함께 있는 string이다. 연산자는 +,-, 가 나오는데 기본 연산처럼 푸는게 아니라 우선순의 연산자를 구한다. 기본 연산은 먼저 계산이지만\+를 먼저 계산할수도 있고 -를 먼저 계산할수도 있고 \*를 먼저 계산할수 있다. 이렇게
조카는 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속된 말은 못한다. babbling이 매개변수로 주어질때 조카가 발음할수 있는 단어 갯수의 총 합을 리턴 접근 방법은 말할수 있는 단어들을