[C_C++]코딩테스트 연습/[프로그래머스] level 1

    [C++] 프로그래머스 - 소수 만들기

    [C++] 프로그래머스 - 소수 만들기

    내 풀이 (실수로 cout을 안 지웠는데 잘 채점이 됐다..!) for문이 엄청 많은데ㅎㅎ... 어차피 함수로 뽑아도 for문 쓰면 실질적으로 돌아가는 for문은 똑같을 것 같아서 그냥 한방에 해결했다. 소수 판별은 2부터 자기자신 직전까지 포문으로 나눠봐서 나눠지는게 있으면 break해서 나가고, 안 나눠져서 끝까지 갔으면 answer++로 값을 올려줬다. #include #include using namespace std; int solution(vector nums) { int answer = 0; for (int i = 0; i < nums.size() - 2; i++) { for (int j = i + 1; j < nums.size() - 1; j++) { for (int k = j + 1; k..

    [C++] 프로그래머스 - 신규 아이디 추천

    [C++] 프로그래머스 - 신규 아이디 추천

    내 풀이 ㅠㅠ for문 돌릴 때 증감자 없애고 안에서 쓸 수 있는걸 몰라서 엄청 삽질했다... #include #include using namespace std; string solution(string new_id) { //1단계 대문자 -> 소문자 for (int i = 0; i = 'A' && new_id[i] = 'a' && new_id[i] = '0' && new_id[i] = 16) new_id.erase(15, new_id.size() - 15); if (new_id.back() == '.') new_id.erase(new_id.size() - 1, 1); //7단계 길이가 2자 이하면 마지막 문자를 new_id 길이 3..

    [C++] 프로그래머스 - 크레인 인형뽑기

    [C++] 프로그래머스 - 크레인 인형뽑기

    무슨 문제길래 카카오 겨울 인턴십 문제가 푼 사람이 2만명이 다 돼가나 했더니... 이중배열의 개념만 잘 이해하고 있으면 생각보다 쉬운 문제였다! 1. board.size()를 하면 가장 겉의 배열의 요소 수를 세어주므로 세로줄 수, 즉 row_num으로 둔다. 2. moves[i]는 x(col_num)을 지정해 줬다. 이중배열은 array[row_num][col_num] 형식으로 요소를 꺼낸다. 3. bucket에 push/pop_back을 사용해 꺼낸 인형의 숫자를 넣거나 없앤다. 4. 인형을 없앨 때는 bucket의 size가 1 이상이어야 비교가 가능하므로 &&를 걸어준다. #include #include using namespace std; //vector board = { {0,0,0,0,0}..

    [C++] 프로그래머스 - 2016년

    [C++] 프로그래머스 - 2016년

    switch에서 바로 return을 줘서 간단하게 구현해봤다. #include #include using namespace std; string solution(int a, int b) { int day = b-1; for (int i = 1; i < a; i++) { if (i == 2) day += 29; else if (i == 4 || i == 6 || i == 9 || i == 11) day += 30; else day += 31; } switch (day%7) { case 0: return "FRI"; case 1: return "SAT"; case 2: return "SUN"; case 3: return "MON"; case 4: return "TUE"; case 5: return "WED"..

    [C++] 프로그래머스 - 모의고사

    [C++] 프로그래머스 - 모의고사

    map을 써서 풀려다 포기하고 오랜만에 배열을 쓰려고 했더니 낯설어서 비교적 쉬운 문제임에도 시간을 좀 잡아먹었다. #include #include #include using namespace std; vector solution(vector answers) { vector answer; int a[5] = { 1, 2, 3, 4, 5 }; int b[8] = { 2, 1, 2, 3, 2, 4, 2, 5 }; int c[10] = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }; int vec[3] = { 0, }; int max_num; for (int i = 0; i < answers.size(); i++) { if (answers[i] == a[i % 5]) vec[0]++; if (an..

    [C++] 프로그래머스 - 폰켓몬 (set)

    [C++] 프로그래머스 - 폰켓몬 (set)

    내 풀이 ) set을 쓰긴 했는데 set 사용법과 algorithm 헤더에 min까지 들어있는지 잘 몰라서 코드가 길어졌다. #include #include #include using namespace std; int solution(vector nums) { int answer = 0; int nums_length = nums.size(); set kind; for (int i = 0; i kind.size() ? kind.size() : nums_length/2; return answer; } 다른 사람 풀이 참고) 1. set 선언할 때 vector의 반복자 멤버함수인 be..

    [C++] 프로그래머스 - 키패드 누르기 (배열 노가다 + 지향할 풀이)

    [C++] 프로그래머스 - 키패드 누르기 (배열 노가다 + 지향할 풀이)

    문제 내 풀이 풀이 방법 ) - 1, 4, 7 : L - 3, 6, 9 : R - 2, 5, 8, 0 : ① 엄지 거리 - 가까운 손 (dist가 더 작은 것) ② 거리 같을 때 - 왼손잡이냐 오른손잡이냐 거리 : 각 키패드 번호에서 각 번호까지의 거리를 담은 배열들을 선언했다. 배열의 인덱스가 0부터 시작하는 점을 이용해 각 자리까지의 거리를 각 인덱스 자리에 맞게 넣었다. 현재 위치 : 왼손 위치는 left, 오른손 위치는 right에 담고 초기 위치를 -1로 설정했다. 눌러야할 키패드가 2,5,8,0일 때만 거리와 왼손/오른손잡이 여부를 생각한다. 왼손/오른손의 현재 위치를 받아 각각에 대한 switch 문을 실행한다. 현재 위치에 따라 미리 만들어뒀던 키패드 자리의 거리배열을 선택하여 눌러야할 번..

    [C++] 프로그래머스 - 징검다리 건너기

    [C++] 프로그래머스 - 징검다리 건너기

    주의) '느리게' 징검다리 건너기... 효율성 0... #include #include using namespace std; int solution(vector stones, int k) { int answer = 0; int jump = 0; while (jump 0) { stones[i]--; jump = 0; } else { jump++; if (jump >= k) return answer; } } answer++; } return answer; } 이렇게 돌리면 코드가 힘겹게 정확성 테스트를 완료하고 효율성 테스트에서는 모조리 시간초과 실패를 띄운다. ㅎㅎ....ㅠ..