분류 전체보기
-
2/6기록 - 백준 7568Algorithm 2022. 2. 6. 11:58
오늘은 실버 5단계의 백준 7568번 덩치 문제를 풀어보았다. 문제는 이러하다. 몸무게와 키를 입력받아 비교하여 몸무게와 키가 더 큰 사람만 덩치가 크다고 간주한다. 그리고 덩치가큰 사람이 자신 보다 몇명있는지를 계산하여 등수로 인식한다. 문제를 보고 처음에 key-value쌍인가 하여 Map? 이라고 생각을 잠시 하였는데, 다 읽고 보니 그냥 브루트 포스법으로 완전탐색을 해주면 되는 문제였다. Map은 너무 간것 같다. ㅋㅋㅋ 알고리즘 생각 1. 키와 몸무게를 담을 이차원배열을 선언하고, 모두 입력을 받는다. 2. 0열에는 몸무게, 1열에는 키를 담는다. 3 이중 for문 안에서 result 변수를 1로 초기화 해두고 해당 행과 다음 행을 비교하는데 만약 키와 몸무게가 모두 크다면 result 변수를 ..
-
2/4기록 - 프로그래머스 두 개 뽑아서 더하기Algorithm 2022. 2. 4. 09:40
오늘은 카카오 2019 블라인드 테스트 level4의 무지의 먹방 라이브를 풀다가 뇌정지가 와버려서 잠시 두고 다른 문제를 풀어보았다. 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예numbersresult [2,1,3,4,1] [2,3,4,5,6,7] [5,0,2,7] [2,5,7,9,12] 입출력 예 설명 입출력 예 #1 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.) 3 = 2..
-
2/3기록 - 백준 1292Algorithm 2022. 2. 3. 09:08
오늘의 포스팅은 실버 5레벨의 백준 1292번 문제이다. 문제 제목 답게 그냥 쉽게 한 문제 풀고 싶어서 들어가 보았는데 보자마자 쉽긴했다 ㅋㅋㅋㅋ 쉽게 푸는 문제인 만큼 문제 이해는 굉장히 쉽다. 예제 입력을 통해서 이해를 해보면 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5... 의 수열에서 3번째 수 2 부터 7번째 수 4까지 2+3+3+3+4 = 15를 출력하면 된다. 나열되어 있는 형태라 일차원 배열로 생각하기 쉽지만 1 2 2 3 3 3 4 4 4 4 와 같이 흔히 c언어 시간에 배웠던 삼각형 모양을 떠올리면 굉장히 간단해진다. 이차원 배열의 형태로 문제를 흔히 풀 수 있어 배열로 나타내고 처음엔 풀었지만, 배열 인덱스가 1000을 넘어가기 때문에 배열보다는 ArrayList를 사용하는..
-
2/2기록 - 백준 1436Algorithm 2022. 2. 2. 09:56
오늘은 백준 1436번 영화감독 숌 문제를 풀어보았다. 문제는 이러하다. 영화감독 숌은 그냥 허울이고 정확하게 말해서는 종말의 숫자 666이 들어가는 수를 오름차순으로 나열하는것. N이 2라면 666이 들어가는 수 중 두 번째로 작은 수 1666이, N이 3이라면 666이 들어가는 수 중 세 번째로 작은 수 2666이 출력되게 되는 것이다. 문제를 보면서 오름차순으로 모든 수를 검사해서 666을 포함하면 출력해 주면 되겠다는 생각이 들었다. 흔히 말하는 브루트 포스 알고리즘을 사용하면 될듯했다. 알고리즘 생각 1. N을 입력받는다. 2. num 변수를 0으로 설정하고 모든 수를 순차적으로 검사할 준비를 한다. 3. count 변수 0으로 선언 4. while문을 무한 루프로 돌려주면서, num을 먼저 +..
-
2/1기록 - 백준 11720Algorithm 2022. 2. 1. 11:35
오늘은 민족 대명절 설인 만큼 바쁠 거라 생각 되어 아침에 간단하게 브론즈 단계의 문제를 풀어 보았다. 백준 11720번 숫자의 합 문제이다. 문제는 매우 간단하다. 숫자 개수를 입력받고, 그 개수만큼 아래쪽에 수를 입력받아서 각 자리 숫자들의 합을 구해 주면 된다. 알고리즘 생각 1. 숫자 N 입력받기 2. 숫자 N개를 입력받기, 공백이 따로 없으므로 Tokenizer는 사용하지 않고, 단순히 String형태로 입력받는다. 3. charAt() 메소드로 숫자 하나씩 따로 떼어준다. 4. int temp 변수에 char형태의 숫자 하나하나씩을 for구문 안에서 넣어줘서 합을 구할 수 있도록 해 준다. 5. sum 변수의 초깃값을 설정해주고, 해당 변수에 for 구문 안에서 더해준 후 sum 변수를 출력한..
-
1/31기록 - 백준 1475Algorithm 2022. 1. 31. 15:14
설 연휴 시작인 오늘 오전에는 전을 부치고 오후에는 알고리즘 문제를 하나 풀어보았다. 실버 5 라인에서 문득 눈에 띈 문제는 바로 백준 1475번 방 번호 문제였다. 문제는 이러하다. 총 0~9까지의 숫자 플라스틱으로 한 세트가 구성되고, 6,9의 경우에는 뒤집어서 하나로 퉁칠 수 있다. 입력받은 숫자를 만들 수 있는 최소 세트의 개수를 구하면 되는 문제이다. 알고리즘 생각 1. 숫자를 입력받는다. - 6,9를 문자열로 비교하기 위해 문자열 타입으로 입력받는다. 2. 0~9까지의 플라스틱 숫자 세트를 담은 배열 하나를 선언한다. 3. charAt() 메소드를 사용해서 숫자 하나하나를 문자열로 뜯어서 본다. 4. 9의 경우 6을 넣어주고 최종적으로 하나씩 올리면서 입력받은 숫자 개수만큼을 조사하기 위해 배..
-
1/30기록 - 프로그래머스 2019 Kakao level2 - 오픈 채팅방Algorithm 2022. 1. 30. 15:35
오늘은 어제 하루를 쉬었기 때문에 알고리즘 스터디원들과 함께 카카오 2019 level2의 오픈 채팅방 문제를 풀어보기로 했다. 문제가 너무나 긴 관계로 문제는 코딩테스트 연습 - 오픈채팅방 | 프로그래머스 (programmers.co.kr)을 참고하기를 바란다. 주된 포인트는 uid는 그대로이고, 닉네임이 바뀔 수 있다는 점과 세트로 아이디와 닉네임이 움직인다는 점이었다. 세트라면 HashMap을 이용해 key-value쌍으로 표현해 줄 수 있을 것이라고 생각했다. 이처럼 문제를 풀었는데, 하나 하나 뜯어서 보자. 큰 틀은 HashMap과 ArrayList의 활용이었다. Map은 uid와 name을 저장할 Key-value쌍을 나타내고, ArrayList는 출력 형식을 담아주기 위해 필요하다. 먼저 r..
-
4. Queue(큐)Data Structure 2022. 1. 28. 11:13
큐란? - 스택과 유사하게 데이터를 일시적으로 쌓아 두기 위한 자료구조, 선입선출(FIFO)형식이다. **enQueue(인큐)와 deQueue(디큐) - enQueue : 큐에 데이터를 넣는 작업을 말한다.(rear에서 넣음) - 시간복잡도 O(1) - deQueue : 큐에서 데이터를 꺼내는 작업을 말한다.(front에서 꺼냄) - 시간복잡도 O(n), 중간의 데이터가 수정될 경우 모든 요소를 한 칸씩 앞으로 옮기는 작업을 하게 되기 때문에 시간 복잡도가 상대적으로 높다. **링 버퍼 - deQueue의 시간 복잡도를 줄이기 위해서 배열 요소를 앞쪽으로 옮기지 않고 배열의 처음이 끝과 연결되었다고 보는 자료 구조. 시간 복잡도는 O(1)이다. 이렇게 배열의 처음과 끝을 연결해서 데이터가 수정되어도 해당..