본문 바로가기

전체 글75

프로그래머스 : 프린터 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=cpp 문제 설명 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 문제 입출력 예) priorities location return [2, 1, 3, 2] 2 1 [1, 1, 9, 1, 1, 1] 0 5 문제 풀이 queue에 pair을 사용해서, 고유 index값으로 해당 원소가 몇번 째에 출력이 되는지 찾으려고 했다. 그 이후 우선순위 큐에 있는 최대 값과 비교해서 같은 값이라면, .. 2022. 11. 8.
프로그래머스 : Summer/Winter Coding 소수 만들기 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12977 문제 설명 1. 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 2. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때 3. nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 구하시오. 문제 입출력 예) nums result [1,2,3,4] 1 [1,2,7,6,4] 4 문제 풀이 (1/2) nums으로 주어진 인자 중 3개를 골라 소수인지 확인을 해야 하기 때문에 3중 for문을 돌려 모든 경우의 수를 골라내야 한다고 생각했다. 모든 경우의 수를 찾은 다음, 그 숫자가 소수가 맞는지 아닌지만 판단하면 .. 2022. 11. 7.
알고리즘 퀵 정렬(Quick Sort) 문제 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 5 8 10 7 6 3 2 9 4 알고리즘 종류 Selection sort (내부 : 교환) Bubble Sort (내부 : 교환) Insertion Sort (내부 : 삽입) Quick Sort (내부 : 교환) Shell Sort (내부 : 삽입) Merge Sort (내부 : 병합) Heap Sort (내부 : 선택) Radix Sort (내부 : 분배) 퀵 정렬 알고리즘이란? 퀵 정렬 알고리즘의 가장 큰 특징은, 이전에 배웠던 선택 정렬, 버블 정렬, 삽입 정렬과 다르게 빠른 알고리즘이라는 것입니다. 퀵 정렬은 '분할 정복' 알고리즘으로 평균 속도가 O(Nlog2N)입니다. - 분할 정복 (divide and conquer)방법.. 2022. 11. 4.
알고리즘 삽입 정렬(Insertion Sort) 문제 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 5 8 10 7 6 3 2 9 4 알고리즘 종류 Selection sort (내부 : 교환) Bubble Sort (내부 : 교환) Insertion Sort (내부 : 삽입) Quick Sort (내부 : 교환) Shell Sort (내부 : 삽입) Merge Sort (내부 : 병합) Heap Sort (내부 : 선택) Radix Sort (내부 : 분배) 삽입 정렬 알고리즘이란? 삽입 정렬은 두 번째 원소부터 시작해서, 그 앞의 원소들과 비교하여 삽입할 위치를 지정한 후 앞의 원소를 뒤로 옮기고 지정한 자리에 원소를 삽입하여 정렬하는 알고리즘이다. 정렬된 부분은 왼쪽, 정렬할 부분을 오른쪽으로 구별을 한다. ex) 10, 7, 6.. 2022. 11. 4.
알고리즘 버블 정렬(Bubble Sort) 문제 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 5 8 10 7 6 3 2 9 4 알고리즘 종류 Selection sort (내부 : 교환) Bubble Sort (내부 : 교환) Quick Sort (내부 : 교환) Insertion Sort (내부 : 삽입) Shell Sort (내부 : 삽입) Merge Sort (내부 : 병합) Heap Sort (내부 : 선택) Radix Sort (내부 : 분배) 가장 작은 값을 선택해서 앞으로 보내는 선택정렬에 이어, 이번시간에는 버블 정렬에 대해 알아보도록 합시다. 버블정렬은 선택 정렬과 기본 개념이 비슷합니다. 인접한 두 숫자를 비교해서, 더 작은 숫자를 앞으로 보내주는 것을 반복하는 정렬입니다. 예를들어 arrpay[5] = {10.. 2022. 11. 4.
프로그래머스 : 모의고사 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42840 문제 설명 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1. 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때 2. 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요. 문제 입출력 예) a.. 2022. 11. 4.
프로그래머스 : 숫자 문자열과 영단어 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/81301 문제 설명 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1. 1478 → "one4seveneight" 2. 234567 → "23four5six7" 3. 10203 → "1zerotwozero3" 문제 입출력 예) s result "one4seveneight" 1478 "23four5six7" 234567 "2three45sixseven" 234567 "123" 123 문제 풀이 1/2 너무 비효율 적인 방법으로 문제를 풀었다,, s의 글자수 길이 만큼 for문을 돌리고, str이라는 문자열을 주고 이와 해당되는 공간을 찾아 변경을 실시하였다. for문에 for문을 .. 2022. 11. 4.
프로그래머스 : [1차] 비밀지도 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/17681 문제 설명 네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라. 문제 입출력 예) 매개변수 값 n 5 arr1 [9, 20, 28, 18, 11] arr2 [30, 1, 21, 17, 28] 출력 ["####", "# # #", "### #", "# ##", "#####"] 문제 풀이 비밀지도의 정보다 담긴 arr1과 arr2가 주어진다. 두개의 값이 합쳐졌을 때, 비밀지도의 암호를 해독할 수 있다. arr1과 arr2를 or연산을 하고, 2진수로 바꾸어 간단하게 풀 수 있는 문제였다. #include #include #in.. 2022. 11. 4.
프로그래머스 : 소수 찾기 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12921 문제 설명 1. 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 2. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. 3. (1은 소수가 아닙니다.) 문제 입출력 예) n result 10 4 5 3 문제 풀이 문제를 어떻게 풀어야할지 생각하다가, 너무 비효율적인 풀이라서 문제풀이를 포기했었다,, 내가 생각한 문제풀이는 for문을 돌려서 그 내용이 0과 자기자신을 가진 소수인지 전부 비교하는 것이였다. 이것은 알고리즘이아니라, 누구나 풀 수 있는,,, 비효율적인,, 방안,,, 그래서 문제풀이를 찾아보고서 다시 문제를 풀.. 2022. 11. 3.