본문 바로가기
반응형

코딩테스트/프로그래머스(lv1)13

[프로그래머스 Level 1] 키패드 누르기 (C++) programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 구현 방법 이 문제를 처음 봤을 때, 특정 알고리즘/ 자료구조를 사용할 필요 없이 구현력을 요구하는 문제 같아 보였습니다. 이 문제를 해결할 로직은 다음과 같습니다 입력받은 숫자 배열을 처음부터 하나씩 탐색 숫자가 1, 4, 7 이면 왼손으로 누르고 왼손 위치를 해당.. 2021. 2. 28.
[프로그래머스 Level 1] 신규 아이디 추천 (C++) programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 카카오계정개발팀에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. 네오에게 주어진 첫 업무는 새로 가 programmers.co.kr 구현 방법 0단계: 공백 제거 C++ STL의 remove(), erase() 함수를 통해 문자열에 원하는 값을 제거할 수 있습니다. 문자열. erase(remove(문자열. begin(), 문자열. end(), 제거하고 싶은 것), 문자열. end()) 1단계: 소문자로 변환하기 문자열의 길이만큼 반복하며 소문자로 변환해주기 위해 tolower() 함수를 사용했습니다. .. 2021. 1. 31.
[프로그래머스 Level 1] 직사각형 별찍기 (C++ - 2가지) programmers.co.kr/learn/courses/30/lessons/12969 코딩테스트 연습 - 직사각형 별찍기 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수 programmers.co.kr 구현 방법 1 이 문제를 보면 대부분의 사람들은 2중 for문을 생각할 것입니다. 보통의 경우 다음과 같이 풀 것입니다. 높이만큼 반복하며, 내부에서 너비만큼 반복하여 별을 찍어줍니다. 소스코드 #include using namespace std; int main(void) { int a; int b; cin >> a >> b; for(int i=.. 2021. 1. 30.
[프로그래머스 Level 1] 다트 게임 (C++) programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 구현 방법 처음에 들었던 생각은, 주어진 문자열을 문자열 길이만큼 반복하면서, 숫자를 찾으면 그다음을 읽어와 S, D, T 중 판별하고, 그다음을 읽어와 *이나 #이 있는지 체크해서 점수를 추가해주는 방법을 생각했습니다. 하지만 이 방법은 10처럼 두 자리의 숫자가 오면 틀린 로직이었습니다. 이 문제의 가장 까다로운 상황은 2자리의 정수가 점수로 기록되었을 때인 것 같습니다. 새로 생각한 로직은, 문자열을 읽을 때, 숫자가 아닌 문자가 나올 때까지의 숫자를 하나의 temp변수에 담아줍니다. 예를 들어 "100S"라는 문자열이 오면 처음부터 탐색해 .. 2021. 1. 30.
[프로그래머스 Level 1] 비밀 지도 (C++) programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 구현 방법 먼저, 10진법으로 수가 주어지니 이진법으로 변환하는 방법을 생각해보았습니다. 예를 들어 9를 이진법으로 표현하면 01001(2)입니다. 이진법으로 표현하는 로직은 다음과 같습니다. 9를 2로 나누면 몫 = 4, 나머지 = 1 4를 2로 나누면 몫 = 2, 나머지 = 0 2를 2로 나누면 몫 = 1, 나머지 = 0 1을 2로 나누면 몫 = 0, 나머지 = 0.. 2021. 1. 30.
[프로그래머스 Level 1] 실패율 (C++) programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 구현 방법 먼저 입력 정보에 대해 고민해 봤습니다. N : 스테이지의 개수 stages : 사용자가 현재 도전 중인 스테이지 번호 즉 stages 가 [2,1,2,6,2,4,3,3]이면, 1번 유저는 2번 스테이지에서 플레이 중, 2번 유저는 1번 스테이지에서 플레이 중, 3번 유저는 2번 스테이지에서 플레이 중. stages의 숫자가 스테이지 개수인 N+1이면 해당 유저는 .. 2021. 1. 30.
[프로그래머스 Level 1] 체육복 (C++) programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 구현 방법 체육복을 갖고 와서 수업 참여가 가능한 학생은 1을 더해줘서 표기 체육복을 도둑맞아 잃어버린 학생들은 수업 참여가 불가능하므로 1 빼주기 체육복 여분을 가져온 학생들도 1 더해줘서 표기 즉, 숫자가 2인 학생은 수업 참여가 가능하며 여분 체육복을 빌려줄 수 있는 학생 숫자가 1인 학생은 수업 참여가 가능한 학생 숫자가 0인 학생은 수업 참여가 불가능하고, 옆 학생에게.. 2021. 1. 24.
[프로그래머스 Level 1] K 번째 수 (C++) programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 구현 방법 입력 배열은 array와 commands인데, commands가 [1,5,3]으로 주어지면 이는 array를 1번째 원소부터 5번째 원소들을 담고 정렬하여 그중 3번째 수를 뽑는 문제이다. 간단하게 commands의 개수 만큼 반복하고, 2번째 for문은 commands의 첫 번째 원소부터 두 번째 원소만큼 반복된다. 이때 array의 해당 index에 있는 값을 하나의 배열에 담아주고, 해당 배열을 정렬하고 commands의 마지.. 2021. 1. 24.
[프로그래머스 Level 1] 모의고사 (C++) programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 구현 방법 일단 세 사람의 찍는 방식 패턴을 파악해보았다. 1번 사람은 1,2,3,4,5를 반복하고, 2번 사람은 2,1,2,3,2,4,2,5를 반복하고, 3번 사람은 3,3,1,1,2,2,4,4,5,5를 반복한다. 주어진 답안만큼 반복문을 돌아, 각자의 찍는 패턴을 비교해 맞으면 총점수에 1점씩 더해서 총점수를 저장해두었다. 3 사람의 점수를 담고 정렬하여 최고점을 설정하였.. 2021. 1. 24.
[프로그래머스 Level 1] 완주하지 못한 선수 (C++) programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 구현 방법 처음에 생각했던 로직은, 주어진 두 배열을 비교하기 위해 set_difference 함수를 사용하는 것이였다. 해당 함수를 사용해본적 없고 정확한 사용법을 몰라서 다른 방법을 선택하기로 했다. 선택한 방법은, 두 배열을 정렬하고, 첫번째 원소부터 비교해나가다가 두 원소가 달라지는 지점이 완주를 못한 사람일 것이다. 해당 로직을 구현한 소스코드는 .. 2021. 1. 24.
반응형