프로그래머스 c언어 10

[프로그래머스 level 2] 주식가격 (스택 / 큐)

출처 : 프로그래머스 사용 언어 : C 알고리즘 : 스택/큐 1. 문제 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다..

[프로그래머스 level 1] 직사각형 별찍기

[출처 : 프로그래머스] 문제 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 풀이 goorm에서 많이 보았던 이중 반복문을 활용한 별 찍기 문제이다. #include int main(void) { int a; int b; scanf("%d %d", &a, &b); for(int i=0; i

[프로그래머스 level 1] 하샤드 수

[출처 : 프로그래머스] 문제 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 #1 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 입출력 예 #2 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다. 입출력 예 #3 11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다. 입출력..

[프로그래머스 level 1] 평균 구하기

[출처 : 프로그래머스] 문제 정수를 담고 있는 배열 arr의 평균값을 return 하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 풀이 반복문과 배열을 이용해서 평균을 구하면 된다. #include #include #include // arr_len은 배열 arr의 길이입니다. double solution(int arr[], size_t arr_len) { double answer = 0; for(int i=0; i

[프로그래머스 level 1] 자연수 뒤집어 배열로 만들기

[출처 : 프로그래머스] 문제 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를 들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 풀이 자릿수 문제랑 비슷하다. 일의 자릿수를 구하고 10으로 나눠가며 십의 자리, 백의 자리 차례로 구한 값들을 차례로 배열에 넣으면 된다. #include #include #include int* solution(long long n) { // 리턴할 값은 메모리를 동적 할당해주세요. int* answer = (int*)malloc(sizeof(int)*12); for(int i=0; n!=0; i++){ answer[i]=n%10; n/=10; } return answ..

[프로그래머스 level 1] 자릿수 더하기

[출처 : 프로그래머스] 문제 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를 들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예 입출력 예 #1 문제의 예시와 같습니다. 입출력 예 #2 9 + 8 + 7 = 24이므로 24를 return 하면 됩니다. 풀이 10의 나머지는 일의 자릿수 이므로 n을 10으로 나눠가며 계속해서 일의 자릿수를 더하면 된다. #include #include #include int solution(int n) { int answer = 0; while(n){ answer += n%10; n /= 10; } return..

[프로그래머스 level 1] 이상한 문자 만들기

[출처 : 프로그래머스] 문제 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백 문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야 합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예 s return try hello world TrY HeLlO WoRlD 입출력 예 설명 try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸..

[프로그래머스 level 1] 약수의 합

[출처 : 프로그래머스] 문제 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 #1 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다. 입출력 예 #2 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다. 풀이 이전에 약수와 관련된 문제를 풀면서 많이 해봤던 약수 구하기이다. 1부터 n까지 수를 번갈아 가며 n에 나누었을 때 나머지가 0인 수가 약수이다. #include #include #include int solution(int n) { int answer = 0; for(int i=1; i

[프로그래머스 level 1] 두 정수 사이의 합

[출처 : 프로그래머스] 문제 문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 풀이 #include #include #include #define swap(x, y, temp) (temp=x, x=y, y=temp) long long solution(int a, int b) { long long answer = 0; int temp; if(a>b) s..

[프로그래머스 level 1] 가운데 글자 가져오기

[출처 : 프로그래머스] 문제 문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두 글자를 반환하면 됩니다. 제한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 예시 풀이 문자열에 대해 좀 더 제대로 이해할 수 있었던 문제였다. 문자열 포인터에 대한 개념이 명확히 세워지지 않아서 굳이 strcpy를 사용해가며 이상하게 코드를 짰다. 어쨋던 정답을 맞히고 다른 사람들 코드를 보니 문자열에 다시 공부를 해야겠다는 생각이 든다. - 처음에 짠 코드 #include #include #include // 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요. char* solution(const cha..