본문 바로가기

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

(64)
[Level 1, C++] 모의고사 문제: 모의고사 풀이 방법 문제를 찍는 방식이 3명 모두 다르니까 반복자를 다르게 설정해줘야 겠다고 생각했다. for문의 반복자 하나로 간단하게 만들 방법이 반드시 있을거라고 생각하긴 했는데 그 방법이 떠오르지 않아서 반복자를 직접 만들어서 풀었다. 풀이 코드 #include #include #include using namespace std; vector solution(vector answers) { vector answer; int student_1[] = {1, 2, 3, 4, 5}; int student_2[] = {2, 1, 2, 3, 2, 4, 2, 5}; int student_3[] = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; int std_answers_count[] = ..
[프로그래머스 Level 1, C++] 음양 더하기 삼항연산자를 사용하면 한줄로 만들 수 있다. #include #include using namespace std; int solution(vector absolutes, vector signs) { int answer = 0; for(int i=0; i
[프로그래머스 Level 1, C++] 포켓몬 문제: 포켓몬 풀이 방법 뭔가 되게 긴데 처음에는 어떻게 풀어야할지 몰랐었다. 진짜 모르겠어서 질문하기를 봤는데 min이랑 set을 쓰라고 한다. 진짜 뭔 말인지 몰랐는데 입출력 예를 보니까 뭔가 말이 되는 것 같아서 set이랑 min을 이용하고 입출력 예를 그대로 따라 만들어봤다. set을 만들고 거기다가 포켓몬을 다 넣어서 set의 사이즈를 리던하니까 실패가 되는 것도 있고 아닌 것도 있어서 min을 넣고 n/2랑 비교해서 return 해봤더니 되더라... 소스 코드 #include #include using namespace std; int solution(vector nums) { int answer = 0; set s; for(auto & i : nums) { s.insert(i); } answ..
[Level 1, C++] 나머지가 1이 되는 수 찾기 #include #include using namespace std; int solution(int n) { vector temp; for(int i=1; i
[Level 1, C++] 완주하지 못한 선수 해쉬를 알아봐야해서 까다로웠던 문제이다. #include #include #include using namespace std; string solution(vector participant, vector completion) { string answer = ""; unordered_map hash; for(string & s : participant) { hash[s]++; } for(string & s : completion) { hash[s]--; } for(auto & key : hash) { if(key.second != 0) { answer = key.first; break; } } return answer; }
[Level 1, C] 숫자 문자열과 영단어 #include #include #include #include // 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요. int solution(const char* s) { int answer = 0; char array[10][6] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; char answer_array[50] = ""; int s_index = 0; int i_index = 0; while (s_index = 48 && s[s_index]
[Level 1, C++] 체육복 진짜 까다로웠던 문제였다. 내 방식대로 도저히 답이 안나와서 같은 과 형에게 알고리즘을 물어보고 나니까 풀 수 있었던 문제다. #include #include #include using namespace std; int solution(int n, vector lost, vector reserve) { int answer = 0; vector student(n, 1); // studnet 배열에 각 학생의 번호와 체육복 갯수를 초기화 for (int i = 0; i < lost.size(); i++) { student[lost[i] - 1]--; } for (int i = 0; i < reserve.size(); i++) { student[reserve[i] - 1]++; } for (int i = 0;..
[Level 1, C++] 최대공약수와 최소공배수 문제 : 최대공약수와 최소공배수 풀이 방법 유클리드 호제법을 쓰지 않으면 시간 오류가 뜨기 때문에 유클리드 호제법을 찾아봐야한다. 공식을 이해하느라 유튜브도 찾아보고 그랬었긴 했다. 원리를 설명하는 영상은 이 영상이 최고인듯하다. 풀이 코드 #include #include using namespace std; vector solution(int n, int m) { vector answer(2, 1); int a, b, tmp; if(n > m) { tmp = m; m = n; n = tmp; } a = n, b = m, tmp = 0; while(b % a != 0) { tmp = b % a; b = a; a = tmp; } answer[0] = a; answer[1] = (n * m) / answer..