본문 바로가기
반응형

코딩테스트26

[BOJ 6198] 옥상 정원 꾸미기 (C++) www.acmicpc.net/problem/6198 6198번: 옥상 정원 꾸미기 문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으 www.acmicpc.net 구현 방법 이 문제는 스택을 활용해야 하는 문제입니다. 1. 첫 번째 건물은 바로 스택에 넣어줍니다. 2. 두 번째 건물 입력부터 다음 로직을 거쳐 줍니다 i) 스택에 있는 건물들 중에, 현재 건물보다 작은 건물들을 다 빼줍니다. ii) 건물을 다 빼줬으면, 스택에 있는 개수만큼 답에 더해줍니다. iii) 해당 입력을 스택에 넣어줍니다. ※ 주의 할 점 ※ 이 문제의 로직 자체는 간단했습니다. 하지만 저.. 2021. 4. 9.
[BOJ 4179] 불! (C++) www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 구현 방법 이 문제는 BFS(Breadth First Search)를 활용한 문제입니다. 기본적인 BFS문제는 Flood Fill 같이 하나의 탐색점을 두고 풀 수 있는데, 이 문제는 불, 지훈이 각각 두 번의 BFS로직을 구현해야 합니다. BFS, 즉 너비 우선 탐색은 다음과 같은 알고리즘을 따릅니다. 시작하는칸을 큐에 넣고 방문했다는 표시 남김 큐의 front를 꺼내고 해당 원소의 상, 하, .. 2021. 2. 28.
[프로그래머스 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 2] 124 나라의 숫자 (C++) programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 구현 방법 이 문제를 보자마자 3진법과 비슷한 패턴이 떠올랐습니다. 해당 패턴 다음과 같은 순서로 진행됩니다. 기존 숫자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 패턴 1 2 3 11 12 13 21 22 23 31 32 33 111 112 113 121 122 123 하지만 124 나라의 숫자 문제에서는 다음과 같은 순서로 진행됩니다. 기존 숫자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 124 나라 1 2 4 11 12 14 21 22 24 41 42 44 111 11.. 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.
반응형