본문 바로가기

전체 글

(121)
그리디 알고리즘 - 큰 수의 법칙 문제 설명 다양한 수 N개로 이루어진 배열이 있을 때, 이 수들을 M번 더해 가장 큰 수를 만드는 법칙 특정 인덱스에 해당하는 수가 연속해서 K번을 초과해서 더해질 수 없음 문제 조건 첫째줄에 N(2 ≤ N ≤ 1000), M(1 ≤ M ≤ 10000)M, K(1 ≤ K ≤ 10000)가 주어지며, 각 자연수는 공백으로 구분한다 둘째줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분한다. 단 각각의 자연수는 1 이상 10000 이하의 수로 주어진다 입력으로 주어지는 K는 M보다 항상 작거나 같다 입력 예시 5 8 3 2 4 5 4 6 출력 : 46 N개의 수들을 M번 더해 가장 큰 수를 만드는 문제였다. 단, 같은 수는 K번 이상 더할 수 없다. 아이디어 : 배열 내에서 가장 큰 수들을 더함 제한..
그리디 알고리즘(탐욕법) 그리디 알고리즘이란? 욕심쟁이 플랜트와 착한 페이지는 치킨메이트이다. 늘 둘이 함께 다니며, 이 건실하고 재능있는 청년들은 1인 1닭 정도는 가뿐히 처리할 수 있다. 오늘도 어김없이 치킨을 먹으러 간 플랜트와 페이지. 둘은 언제나 그랬듯 플랜트가 가장 좋아하는 양념치킨과 페이지가 좋아하는 파닭을 시켰다. 하지만 가는날이 장날이라고, 하필 튀김기 1대가 망가져 오늘은 치킨이 한마리씩 나온다고 한다. 어쩔 수 없지, 두 청년은 시원한 맥주를 시켜놓고, 먼저 나온 파닭을 먹기 시작했다. 그런데 아뿔싸! 늘 두마리를 나눠먹다가 한마리를 먹으니 욕심쟁이 플랜트의 본성이 드러나고야 말았다. 두 다리를 허겁지겁 먹어 치우더니 급기야 날개, 가슴살, 심지어 야들야들한 허벅지살까지!! 혼자 낼름 먹어치워버린 것이다 !!..
알고리즘과 자료구조 공부 시작. 에브리타임에서 나동빈 선생님이 쓰신 '이것이 코딩 테스트다'라는 책을 추천받아 책을 구매했다. 프로그래머스 lv0, lv1 문제를 풀면서 여러 알고리즘과 자료구조 문제가 나왔는데, 사실상 억지로 풀었던 것에 불과했기에 이참에 제대로 공부해보고자 오랜만에 책을 사게 되었다. 학교에서도 복수전공을 하며 졸업 필수 과목을 듣느라 알고리즘 대신 다룰 일도 없는 유니티 강의를 들어야 했고, 자료구조 대신 해본적도 없는 2D 그래픽스 세상에서 헤매야 했다.... 심지어 4학년이 되자 필수 과목이 사라져 모두 의미없는 시간이 되어버린 그저 해피엔딩.... 여튼, 졸업생 선배들에게 조언을 구할때도 가장 걱정하셨던 부분이 바로 CS과목의 부재였다. 뭐...복수전공 한 과가 컴퓨터공학과가 아닌 '멀티미디어공학'과다 보니 ..
[LV1] 햄버거 만들기 마침 햄버거를 시킨 참인데 잘 됐다.문제 설명햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, 빵 – 야채 – 고기 - 빵)로 쌓인 햄버거만 포장을 합니다. 상수는 손이 굉장히 빠르기 때문에 상수가 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없으며, 재료의 높이는 무시하여 재료가 높이 쌓여서 일이 힘들어지는 경우는 없습니다.예를 들어, 상수의 앞에 쌓이는 재료의 순서가 [야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵]일 때, 상수..
splice() splice() 이름 종류 기능 매개변수 splice() 함수 배열 내용 변경 정수, 문자, 배열 splice는 배열의 요소를 건드려 배열의 내용을 바꾸는 함수이다. 배열 요소 추가, 변경 및 삭제가 가능하며, 각 기능을 따로, 또 동시에 사용할 수 있다. 매개변수로는 정수, 문자, 배열을 모두 사용할 수 있고, 리턴 형태는 배열. splice(시작 인덱스, 삭제할 인덱스 수, 추가할 요소1, 추가할 요소2, ....) 주의할 점은 매개변수의 맨 처음 2개는 반드시 정수여야 한다는 것이다. 이는 splice()가 매개변수로 받는 인자의 역할 때문인데, splice() 함수는 배열의 요소 추가 및 삭제가 가능하기 때문에 추가할 인덱스와 삭제하는 인덱스를 모두 기재해 주어야 하기 때문이다. 시작 인덱스 : ..
[LV1] 체육복 이제부터 코드블록에 주석을 써야 할 것 같다. 내 코드를 내가 분석하는 일이 생기고 있다...문제 설명점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다.전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질..
[LV1] 다트 게임 문제 설명다트 게임카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다.갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다.다트 게임은 총 3번의 기회로 구성된다.각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다.점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1 , 점수2 , 점수3 )으로 계산된다.옵션으로 스타상(*) , 아차상(#)이..
[LV1] 소수 찾기 데스크탑을 새로 맞췄는데 스피커가 없어 소리가 안난다. 앰프에 연결해보니 됐다. 이왜진?문제 설명1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.(1은 소수가 아닙니다.)제한 조건n은 2이상 1000000이하의 자연수입니다.입출력 예nresult10453입출력 예 설명입출력 예 #11부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환입출력 예 #21부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환문제 자체는 쉬웠던 것 같다. 다만....유효성 검사에서 발목을 잡혀 원래 하려던 방식을 구현하지 못하였다. 처음에 생각했던건n까지 for문실행(변수 i)for문 안에 1..