728x90

코딩테스트 11

프로그래머스 [PCCE 기출문제] 9번 지폐접기

프로그래머스 [PCCE 기출문제] 9번 지폐접기 - 문제 설명민수는 다양한 지폐를 수집하는 취미를 가지고 있습니다. 지폐마다 크기가 달라 지갑에 넣으려면 여러 번 접어서 넣어야 합니다. 예를 들어 지갑의 크기가 30 * 15이고 지폐의 크기가 26 * 17이라면 한번 반으로 접어 13 * 17 크기로 만든 뒤 90도 돌려서 지갑에 넣을 수 있습니다. 지폐를 접을 때는 다음과 같은 규칙을 지킵니다.지폐를 접을 때는 항상 길이가 긴 쪽을 반으로 접습니다.접기 전 길이가 홀수였다면 접은 후 소수점 이하는 버립니다.접힌 지폐를 그대로 또는 90도 돌려서 지갑에 넣을 수 있다면 그만 접습니다.지갑의 가로, 세로 크기를 담은 정수 리스트 wallet과 지폐의 가로, 세로 크기를 담은 정수 리스트 bill가 주어질 ..

프로그래머스 LV1 C++ 소수찾기 풀이

문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 코드 풀이 이 문제는 다른 문제들과 다르게 시간복잡도에 주의해야했다. 처음에 이중 for문을 쓰면서 이거 안될거 같다 했는데 혹시나가 역시나 소수를 찾는 알고리즘은 꽤 많이 알려져 있고 인터넷검색에도 있기에 어렵진 않았다. 내가 참고한 사이트는 아래이다. [알고리즘] 소수(Prime Number) 구하기 - 에라토스테네스의 체 (Java) (tistory.com) [알고리즘] 소수(Prime Number) 구하기 - 에라토스테네스의 체 (Java) 소수 소수(prime number)는 정수론의 가장 중요한 연구..

프로그래머스 LV1 C++ 문자열 내 p와 y의 개수 풀이

문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 코드 설명 먼저 p와 y의 개수를 받을 int형 변수 두개를 선언하고 0으로 초기화해 주었다.(p_val, y_val) bool answer = true; int p_val = 0, y_val = 0; string의 인덱스 안의 문자가 대문자라면 소문자로 바꿔주었고, 해당 문자가..

프로그래머스 LV1 C++ 문자열 내마음대로 정렬하기 풀이

문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 코드 설명 난 algorithm에 포함된 함수 sort를 활용하여 간단하게 풀이 하였다. 먼저 num을 전역 변수로 선언해 주었다. using namespace std; int num; 입력받은 n을 num에 넣어 주고 sort를 실행하였다. 이번에는 사용자 함수를 사용하여 sort를 사용하였다. vector answer; num = n; sort(strings.begin(), strings.en..

프로그래머스 C++ LV1 나누어 떨어지는 숫자 배열 풀이

문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 코드 풀이 내가 백준에서 프로그래머스를 처음 들어오면서 겪은 문제점이 있었다. vector solution(vector arr, int divisor) { 바로 이 첫번째 줄이었다. 본능적으로는 이게 메인인걸 알고 있었지만 cin이랑 cout을 쓰던 나한테는 꽤 당황스러운 일이었다. 답 출력도 return answer; 이렇게 친절하게 해줬으니까 몇문제를 풀어보고 난 후에야 저위 vector와 int가 입력을 받는 것이란 걸 알수 있었다. 난 그냥 받아준걸..

프로그래머스 1LV C++ 같은 숫자 싫어

프로그래머스 1LV C++ 같은 숫자 싫어 문제 정의 -0~9까지 숫자가 무작위로 나열됨 -연속된 같은 수는 하나로 정리 -입력된 순서대로 출력할 것 문제 풀이 입력받은 크기만큼 반복한다. 맨 처음에는 비교할 애가 없음으로 그냥 answer의 맨뒤에 추가한다. 이후부터는 넣어진 애랑 비교하며 같으면 넘어가고 다르면 answer의 맨뒤에 추가한다. num을 사용한 이유는 맨 뒤에 있는 숫자와 현재 arr의 숫자를 비교하기 위해서 이다. 다만 굳이 num을 선언하지 않고 answer.back() 을 사용하면 맨뒤의 숫자와 비교할 수 있기 때문에 굳이 num을 사용할 필요는 없다. #include #include using namespace std; vector solution(vector arr) { int..

프로그래머스 1LV C++ 가운데 글자 가져오기 풀이

문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 각 부분별 코드 설명 문자열 s의 길이를 가져 온 다음 중간값을 구하기 위해 2로 나눈다. int strl = s.length(); int center_num; string answer; center_num = strl/2; s의 길이가 짝수 일경우 완벽한 중간이 없으므로 중앙의 두 글자를 출력해야한다. 중앙의 두글자는 중간값과 중간값+1의 자리에 있는 것 이지만 배열은 0부터 시작하기 때문에 중간 값-1, 중간 값으로 중앙 두글자를 구할 수 있다. 홀수 일 경우는 나눠질 때 X.5 으로 나누어져 반내림되..

구름 LEVEL C++ 1LV 인공지능 청소기

문제 정의 [0,0]에서 지정한 좌표까지 지정한 초 안에 갈 수 있을까? 2차원 정수 좌표계로 표시, 한칸 이동할때 마다 1초씩 소모 구분별 문제 풀이 각 좌표를 배열로 저장한 후 값을 양의 정수로 저장 for(int i = 0; i > X[i] >> Y[i] >> N[i]; X[i] = abs(X[i]); Y[i] = abs(Y[i]); } 최소 이동거리 구하기 최소 이동거리는 그냥 표 형식이기 때문에 가로 칸 갯수 + 세로 칸 갯수 for(int i = 0; i < T; i++){ min_Distance[i] = X[i] + Y[i]; } 만약 입력한 N값이 최소 거리보다 작으면 NO 출력 크다면 최소거리가 짝수인데 N 값이 짝수 라면 YES 출력 아니면 NO 출력 최소거..

프로그래머스 1LV C++ 2016년 문제 풀이

문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 코드 구역별 설명 각 날짜의 끝날 정리하고 For문을 통해 입력된 달 - 1만큼 day에 더해주었다. int day = 0; string answer = ""; for(int ..

백준 c++ 1018번 체스판 다시 칠하기 문제 풀이

문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다. 보드가 체스판처럼 칠해져 있다는 보장이 없어서, 지민이는 8×8 크기의 체스판으로 잘라낸 후에 몇 개의 정사각형을 다시 칠해야겠다고 생각했다. 당연히 8..