본문 바로가기

코딩 테스트/프로그래머스

(64)
[프로그래머스 Level 1, C] 수박수박수박수박수박수? 문제 : 수박수박수박수박수박수? 풀이 방법 stdbool.h 헤더파일로 c언어에서 bool을 true, false값으로 나타낼 수 있게 하였고 이것으로 flag변수를 만들어서 번갈아가며 "수"와 "박"을 넣을 수 있게 만들었다. strcat는 문자열 뒤에 문자열을 붙일 수 있게 하는 함수인데 char*에 붙일 수 있다. 이렇게만하고 말록 사이즈는 그냥 sizeof(char)로 했더니 덤프 오류가나서 어떻게 해야할까 싶었는데 char* answer = (char*)malloc(800000)으로 한 이유는 char의 사이즈가 8이고 n은 10,000이하의 자연수이라서 8 * 10000으로 생각했는데 잘 돌아가서 그냥 썼다 소스 코드 #include #include #include #include char* ..
[프로그래머스 Level 2, C++] 소수 찾기 문제 : 소수 찾기 풀이 방법 조합과 순열을 적절히 섞어야하며 자릿수도 신경 써야하므로 for문 안에 do while (next_permutation)을 넣었다. 프로그래머스 소수 찾기 11번 케이스만 오답이 나서 뭔가 했는데 numbers를 sort하지 않아서 오류가 났던 것이다. 경우의 수를 전부 체크하고 나면 01과 1은 같은 숫자로 치므로 0도 제거 한 다음, 중복되는 숫자를 제거해서 소수를 체크하면 끝이다 소스 코드 #include #include #include using namespace std; bool isPrime(int& i) { for(int u = 2; u
[프로그래머스 Level 1, Java] 평균 구하기 문제 : 평균 구하기 풀이 방법 배열의 요소를 다 더한 후 배열의 길이만큼 나누면 된다 소스 코드 class Solution { public double solution(int[] arr) { double answer = 0; for(int i : arr) answer += i; return answer / arr.length; } }
[프로그래머스 Level 1, Java] 정수 제곱근 판별 문제 : 정수 제곱근 판별 풀이 방법 n이 어떤 양의 정수 x의 제곱인지 판별하려고 하니까 n의 제곱근은 양의 정수이면 된다. Math.sqrt(n)을 1로 나누었을 때 나머지가 0이면 정수이다 소스 코드 class Solution { public long solution(long n) { if(Math.sqrt(n) % 1 == 0) return (long)Math.pow(Math.sqrt(n) + 1, 2); else return -1; } }
[프로그래머스 Level 2, C++] 최댓값과 최솟값 문제 : 최댓값과 최솟값 풀이 방법 if else 문으로 숫자일 경우를 배열에 넣고 최댓값과 최솟값만 구해주면 된다 소스 코드 #include #include #include using namespace std; string solution(string s) { string answer = ""; vector arr; string temp; for(char & c : s) { if(c == '-' || c != ' ') { temp.push_back(c); } else if (c == ' ') { arr.push_back(stoi(temp)); temp.clear(); } } arr.push_back(stoi(temp)); answer.append(to_string(*min_element(arr.begi..
[프로그래머스 Level 2, C++] 가장 큰 수 문제 : 가장 큰 수 풀이 방법 처음에는 벡터를 하나 만들고 순열구하는 함수로 전부 넣은 다음 최대값을 비교하는 방법으로 풀었는데 테스트 케이스는 정답으로 나왔지만 제출할 때 시간초과라는 뭐같은 상황이 나와서 뭐 없나 생각하다가 그냥 숫자 앞뒤로 비교만 해도 되나 싶어서 해봤는데 정답으로 나와서 다행이었다 근데 11번 테스트 케이스에서 막혀서 질문하기를 봤는데 0일경우 0하나만 나와야한대서 그렇게 해주니 정답이었다 이번에 람다식 공부도 하고 재밌었다 소스 코드 #include #include #include #include using namespace std; string solution(vector numbers) { vector arr(numbers.size()); // numbers벡터에서 arr벡..
[프로그래머스 Level 1, C] 직사각형 별찍기 문제 : 직사각형 별찍기 풀이 방법 별찍기 자체는 어렵지 않은데, 주어지는 파라미터가 없어서 scanf와 printf를 직접 넣어야 한다는 함정이 숨어 있었다 소스 코드 #include int main(void) { int a; int b; scanf("%d %d", &a, &b); for(int i = 0; i
[프로그래머스 Level 2, C++] 124 나라의 숫자 문제 : 124 나라의 숫자 풀이 방법 3진법으로 풀면 되는거 아닌가 했는데 0이 없는 나라였다... 124 나라의 수체계의 3번 째를 3진수의 10으로 맞추려면 3으로 나눴을 때 0이 나오면 4로 만들면 된다 그리고 몫에서 1을 빼면 완전한 4가 된다 조금 더 자세히 보면 10진수 3은 3진수로 바꿀 때 10이 된다 3을 3으로 나눴을 때 나머지가 0, 몫이 1이다. 그럼 여기서 나머지 0을 4로 바꾸고 몫에서 1을 뺀다면? 이렇게 계산을 한 다음, 몫을 쓰고 나머지를 쓰면 04 즉, 4가 된다 (진법 계산을 while문으로 만들 때 while(몫 != 0) 이런식으로 만들게 되는데 0이 되면 반복문을 종료하게 되니 4가 되는거다) 그래서 진법 계산을 할 때 몫 변수를 3으로 나누고 나머지가 0이되면 ..