프로그래머스 알고리즘 7

[프로그래머스 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] 핸드폰 번호 가리기

[출처 : 프로그래머스] 문제 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 4 이상, 20 이하인 문자열입니다. 풀이 반복문 잘 활용하면 된다. #include #include #include // 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요. char* solution(const char* phone_number) { // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게..

[프로그래머스 level 1] 콜라츠 추측

[출처 : 프로그래머스] 문제 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 제한 사항 입력된 수, num은 1 이상 8000000 미만인..

[프로그래머스 level 1] 정수 제곱근 판별

[출처 : 프로그래머스] 문제 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1 이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. 풀이 제곱근된 값 x가 정수인지, 아닌지 판단하여 정수가 아니면 -1을 리턴하였다. 정수일 경우 pow함수를 통해 x+1의 제곱을 구했다. #include #include #include #include..

[프로그래머스 level 1] 문자열 다루기(isdigit함수)

[출처 : 프로그래머스] 문제 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. 풀이 #include #include #include #include // 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요. bool solution(const char* s) { bool answer=true; if(strlen(s)==4||strlen(s)==6){ for(int i=0; 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] 2016년 - 요일 맞추기 문제

[출처 : 프로그래머스 사이트] 그동안 goorm 사이트에서 C문제를 풀다가 프로그래머스 사이트로 옮기게 되었다. goorm에는 종종 오류가 있는 문제도 있고, 문제 난이도가 들쑥날쑥해서 프로그래머스로 바꾸게 되었다. 사용자도 프로그래머스가 월등히 많다. 문제 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날..