이번 문제를 기점으로 0레벨의 PCCE 기출문제 시리즈는 1문제가 남았다. (이래 놓고 언젠가 추가될 수도 있지만) 이번 문제는 함수 이름때문에 스크롤을 이리저리 올렸다 내렸다 하는게 귀찮은 문제였다. 문제 이번 문제는 빈칸 채우기 문제로 설명을 읽기 전에 코드를 먼저 살펴보긴 했다. 코드를 먼저 봤을 때, 함수 내부를 완성하고 main 함수에서 해당 함수들을 적절히 호출하는 문제였다. 풀이 auto, target, minimum에 해당하는 함수를 작성해야 하는데 문제에서는 이름이 func1, 2, 3으로 구분되어 있다. 일단 func2가 auto 모드인 것은 해당 모드 동작과 함수 본문이 같은 로직이므로 직관적으로 파악할 수 있다. 이 때, 빈 칸에 else가 아닌 else if를 적으면 컴파일 에러가..
오늘은 정답자가 적은 문제 중에 하나로 골라 풀어보았다. 한글로된 문제를 읽었을 때는 살짝 헷갈리는 문제였는데, 입출력 예시와 비교하면서 문제를 제대로 이해하게 됐다. 문제에서는 특정 인덱스부터 시작하는 문자열을 접미사라고 하는데 그냥 모든 인덱스에서 마지막 글자까지 자른 것이 접미사이다. 풀이 먼저 반복문을 사용해 리턴할 배열에 원소를 넣어주기 전에 리턴할 배열의 길이를 정해야 한다. 생각해보면 주어진 문자열의 길이만큼의 숫자가 리턴할 배열의 길이가 된다. 이제 반복문을 사용해 가장 긴 문자열부터 가장 짧은 문자열까지 배열을 채워준다. 그 다음 문제의 요구사항은 해당 배열이 정렬되어 있는 것인데 사전 순으로 정렬이 되어야한다. 보통 사전은 가나다순. 즉, 오름차순이기에 sort() 메소드를 사용했다. ..
오늘 문제는 리스트를 자르는 부분이 필요해서 한 번 풀어보게 되었다. 문제 문제를 읽어보면 주의해야할 점이 하나 있었다. 바로 인덱스에 관련한 것인데 입출력 예시에서 보면 n값이 3일 때, num_list의 2번 인덱스에서부터 자르는 모습을 볼 수 있었다. 풀이 풀이 코드는 한 줄로 적었기 때문에 읽을 때 무리가 없을 것이라 생각한다. 주어진 배열을 리스트로 변경한 뒤, 주어진 인덱스에 맞춰 자르고 다시 배열로 형변환을 해주었다. 실행 결과
이번 문제는 제목에 충실한 문제다. 문제를 먼저 살펴보자. 문제 연산자에 대한 진리표를 보면 아랫 화살표는 OR 연산으로 보이고, 윗 화살표는 AND 연산으로 보인다. 풀이 결국 문제에서 주어진 네 개의 변수값을 원하는 식에 대입해주면 되는데 먼저 x1, x2의 결과가 true일 때 x3, x4의 연산값이 의미가 있고 false인 경우, 무조건 false로 리턴되어야 한다. 실행 결과
이 문제는 내 블로그에 꾸준히 등장하는 패턴이다. 문자형을 정수형으로 변환하는 게 핵심인데, 코틀린으로 벌써 이 유형을 4번째 풀고 있다. 하지만, 귀신같이 오늘도 헷갈려서 내 블로그를 뒤적였다. 문제를 다같이 보자. 문제 반복문으로 문자열 각 인덱스를 정수형으로 변환해 모두 더하면 끝이다. 풀이 다시 한 번 나에게 상기시키는 메소드지만, Character를 Int로 바꿀 때는 웬만한 상황에서 digitToInt()를 사용하면 된다. 웬만한 상황이라 적은 이유는 코틀린 버전이 낮은 상황(1.5 아래)에선 Character.getNumericValue를 사용해야하기 때문이다. 실행 결과
오랜만에 돌아온 PCCE 기출문제 시리즈이다. 이 사이에 있던 문제는 딱히 블로그에 올릴 만한 내용은 없어서 스킵해버렸다. 문제 실행 순서대로 설명해보면 n번 학생이 본인 점수를 질의한다. 그럼 해당 번호에 맞는 점수 두 개를 비교해서 같다, 다르다를 판단한다. 이렇게 정리해볼 수 있겠다. 풀이 원래는 score_list[i]와 같은지 판단하도록 코드가 구성되어있었다. 하지만, i번째를 비교하게 되면 입출력 예시에 대입해볼 때 값이 이상해진다. 학생의 번호 값이 들어있는 numbers 안의 값을 가져와야 하는데 score_list의 0번부터 비교하게 되면 안된다. 그래서 numbers[i] 값을 가져오게 되었는데 이 때, 입출력 예시에서 numbers 값이 1인 경우, our_score에서 비교하는 값이..
이번에는 코틀린으로 정말 간결하게 풀 수 있는 문제가 있어서 풀어보았다. 문제 myString에 pat이 대소문자 상관없이 포함되기만 하면 1 아니면 0을 리턴하면 된다. 입출력 예시에서 길이를 논하는 부분이 있는데 굳이 필요없는 부분이라 생각한다. 풀이 최대한 짧게 쓰려고 했다면 if-else문의 중괄호 조차 생략해버릴 수 있었는데 그렇게 되면 가독성이 떨어져 보여 중괄호를 빼지 않고 써보았다. 나는 모두 소문자로 변환하여 비교했지만 반대로 모두 대문자로 변환하여 비교해도 무관하다.
약 한 달만의 문제 풀이 시간이 돌아왔다. 긴 말 할 것 없이 바로 문제를 확인해보자. 문제 입력값이 홀수이면 그 이하 홀수값을 모두 더해 리턴하고, 짝수이면 그 이하 짝수들의 제곱값을 모두 더해 리턴한다. 풀이 반복문을 통해 수를 더할 때 step을 설정해 주었는데 홀짝 여부에 따라 시작 숫자를 다르게 설정했다. 실행 결과
이번에는 피타고라스의 정리에 관한 문제인데 다들 아는 a제곱 + b제곱 = c제곱 공식을 알고 있는 지에 대해 확인하는 문제같다. 문제 결국 문제에서 요구하는 값은 b제곱인데 이는 보통 c제곱 - a제곱이라는 사실을 알 것이다. 풀이 여기서 이 문제가 특이했던 점은 2줄 이상 수정 시 에러가 난다고 한다. 그래서 한 줄만 수정했더니 저렇게 초록색으로 괜찮다는 표시가 보였다. 내가 수정한 줄의 원본은 int b_square = c - a;였다. 실행 결과
이 문제를 보고 PCCE가 뭔가 했더니 프로그래머스의 코딩필수역량인증시험이라고 한다. 그래서 기출문제를 하나씩 풀어보고 있다. 다만, 자주 사용하던 코틀린은 없다는게 아쉬울 따름이다. 문제 간단히 말해 주어지는 코드의 빈칸 넣기 문제이다. 풀이 아래 3줄의 프린트문에 맞춰 변수 값을 채워주었다. 정말 언어를 알고 있느냐 수준의 문제였다.