프로그래머스

프로그래머스

문자 개수 세기 코틀린(Kotlin)

이번 문제는 최근 포스팅한 AES 암호화 관련 글이 떠올라 풀어보았다. 문제문제의 요구사항은 영어 대소문자의 index를 가진 배열에문자열 안의 각 문자가 몇 번 포함되었는지 저장하는 것이다. 이 때, C언어를 배웠던 사람이라면 아스키 코드(ASCII Code)를 생각하지 않을까 싶다. 그리고 아스키 코드를 생각해낸 사람이라면 영소문자끼리 영대문자끼리 붙어있단 사실도 기억하고 있을 것이다. 그럼 이제 문제를 해결해보자. 풀이먼저 영대소문자를 모두 포함할 배열을 만들어준다. repeat 함수를 사용해 반복문을 대체했고문자열에서 각 index에 해당하는 문자를 숫자로 변환 후해당 정수 값으로 대소문자를 판별하고 배열 값을 1씩 증가시켜주었다. 그렇게 완성된 배열을 리턴해주면 된다. 실행 결과

프로그래머스

0떼기 코틀린(Kotlin)

오늘 이 문제는 기존에 사용해보지 않은 메소드를 사용해보는 겸 풀어보았다. 이번에 사용한 함수는 코틀린 표준 라이브러리에 있는 함수이다. 문제문제의 요구사항은 간단하다. 문자열 왼쪽의 0을 없애주면 된다. 여기서 문자열 왼쪽을 삭제하면서 자바엔 없는 함수를 사용해봤다. 풀이먼저 0이 몇개나 존재할지 모르기 때문에while문에서 startsWith로 문자열이 0으로 시작하면 문자열 앞의 0을 지워주었다. 그리고 removePrefix의 리턴을 다시 지역 변수로 넣어주었다. 지역 변수로 리턴된 문자열을 다시 넣어주지 않으면answer에 넣어둔 파라미터 값이 변하지 않기 때문에 while문에서 무한루프에 빠질 수 있다. 실행 결과

프로그래머스

[PCCE 기출문제] 8번 / 창고 정리 자바(Java)

이 문제가 0레벨 PCCE 기출문제 마지막이다. 사실 몇 번 들어갔다 문제 읽기 귀찮아서 뒤로 가기를 눌렀던 적이 있다 ㅋㅋ 아무튼 마무리를 지어보도록 하자. 문제 물건 종류가 들어있는 배열이 하나 있고, 해당 배열과 1대1로 짝지어진 갯수가 들어있는 배열이 있다. 여기서 우리가 마지막으로 리턴해야 할 값은 물건 종류이다. 그리고 나는 이 문제가 딱 한 줄만 수정해야하는 디버깅 문제인 점이 기억났다. 따라서, 아무런 수정도 하지 않고 먼저 실행해보았더니 결과가 물건 종류가 아닌 갯수가 리턴되고 있었다. 게다가 그 갯수도 총합이 아닌 함수 파라미터로 주어진 num배열 값 중 하나였다. 풀이 주석 아래 코드는 첨부하지 않았는데 말로 요약하자면 이렇다. 간단히 갯수 최댓값에 따라 리턴값을 갱신하는 코드이다. ..

프로그래머스

[PCCE 기출문제] 7번 / 가습기 자바(Java)

이번 문제를 기점으로 0레벨의 PCCE 기출문제 시리즈는 1문제가 남았다. (이래 놓고 언젠가 추가될 수도 있지만) 이번 문제는 함수 이름때문에 스크롤을 이리저리 올렸다 내렸다 하는게 귀찮은 문제였다. 문제 이번 문제는 빈칸 채우기 문제로 설명을 읽기 전에 코드를 먼저 살펴보긴 했다. 코드를 먼저 봤을 때, 함수 내부를 완성하고 main 함수에서 해당 함수들을 적절히 호출하는 문제였다. 풀이 auto, target, minimum에 해당하는 함수를 작성해야 하는데 문제에서는 이름이 func1, 2, 3으로 구분되어 있다. 일단 func2가 auto 모드인 것은 해당 모드 동작과 함수 본문이 같은 로직이므로 직관적으로 파악할 수 있다. 이 때, 빈 칸에 else가 아닌 else if를 적으면 컴파일 에러가..

프로그래머스

접미사 배열 코틀린(Kotlin)

오늘은 정답자가 적은 문제 중에 하나로 골라 풀어보았다. 한글로된 문제를 읽었을 때는 살짝 헷갈리는 문제였는데, 입출력 예시와 비교하면서 문제를 제대로 이해하게 됐다. 문제에서는 특정 인덱스부터 시작하는 문자열을 접미사라고 하는데 그냥 모든 인덱스에서 마지막 글자까지 자른 것이 접미사이다. 풀이 먼저 반복문을 사용해 리턴할 배열에 원소를 넣어주기 전에 리턴할 배열의 길이를 정해야 한다. 생각해보면 주어진 문자열의 길이만큼의 숫자가 리턴할 배열의 길이가 된다. 이제 반복문을 사용해 가장 긴 문자열부터 가장 짧은 문자열까지 배열을 채워준다. 그 다음 문제의 요구사항은 해당 배열이 정렬되어 있는 것인데 사전 순으로 정렬이 되어야한다. 보통 사전은 가나다순. 즉, 오름차순이기에 sort() 메소드를 사용했다. ..

프로그래머스

n번째 원소부터 코틀린(Kotlin)

오늘 문제는 리스트를 자르는 부분이 필요해서 한 번 풀어보게 되었다. 문제 문제를 읽어보면 주의해야할 점이 하나 있었다. 바로 인덱스에 관련한 것인데 입출력 예시에서 보면 n값이 3일 때, num_list의 2번 인덱스에서부터 자르는 모습을 볼 수 있었다. 풀이 풀이 코드는 한 줄로 적었기 때문에 읽을 때 무리가 없을 것이라 생각한다. 주어진 배열을 리스트로 변경한 뒤, 주어진 인덱스에 맞춰 자르고 다시 배열로 형변환을 해주었다. 실행 결과

프로그래머스

간단한 논리 연산 코틀린(Kotlin)

이번 문제는 제목에 충실한 문제다. 문제를 먼저 살펴보자. 문제 연산자에 대한 진리표를 보면 아랫 화살표는 OR 연산으로 보이고, 윗 화살표는 AND 연산으로 보인다. 풀이 결국 문제에서 주어진 네 개의 변수값을 원하는 식에 대입해주면 되는데 먼저 x1, x2의 결과가 true일 때 x3, x4의 연산값이 의미가 있고 false인 경우, 무조건 false로 리턴되어야 한다. 실행 결과

프로그래머스

문자열 정수의 합 코틀린(Kotlin)

이 문제는 내 블로그에 꾸준히 등장하는 패턴이다. 문자형을 정수형으로 변환하는 게 핵심인데, 코틀린으로 벌써 이 유형을 4번째 풀고 있다. 하지만, 귀신같이 오늘도 헷갈려서 내 블로그를 뒤적였다. 문제를 다같이 보자. 문제 반복문으로 문자열 각 인덱스를 정수형으로 변환해 모두 더하면 끝이다. 풀이 다시 한 번 나에게 상기시키는 메소드지만, Character를 Int로 바꿀 때는 웬만한 상황에서 digitToInt()를 사용하면 된다. 웬만한 상황이라 적은 이유는 코틀린 버전이 낮은 상황(1.5 아래)에선 Character.getNumericValue를 사용해야하기 때문이다. 실행 결과

프로그래머스

[PCCE 기출문제] 6번 / 가채점 자바(Java)

오랜만에 돌아온 PCCE 기출문제 시리즈이다. 이 사이에 있던 문제는 딱히 블로그에 올릴 만한 내용은 없어서 스킵해버렸다. 문제 실행 순서대로 설명해보면 n번 학생이 본인 점수를 질의한다. 그럼 해당 번호에 맞는 점수 두 개를 비교해서 같다, 다르다를 판단한다. 이렇게 정리해볼 수 있겠다. 풀이 원래는 score_list[i]와 같은지 판단하도록 코드가 구성되어있었다. 하지만, i번째를 비교하게 되면 입출력 예시에 대입해볼 때 값이 이상해진다. 학생의 번호 값이 들어있는 numbers 안의 값을 가져와야 하는데 score_list의 0번부터 비교하게 되면 안된다. 그래서 numbers[i] 값을 가져오게 되었는데 이 때, 입출력 예시에서 numbers 값이 1인 경우, our_score에서 비교하는 값이..

프로그래머스

원하는 문자열 찾기 코틀린(Kotlin)

이번에는 코틀린으로 정말 간결하게 풀 수 있는 문제가 있어서 풀어보았다. 문제 myString에 pat이 대소문자 상관없이 포함되기만 하면 1 아니면 0을 리턴하면 된다. 입출력 예시에서 길이를 논하는 부분이 있는데 굳이 필요없는 부분이라 생각한다. 풀이 최대한 짧게 쓰려고 했다면 if-else문의 중괄호 조차 생략해버릴 수 있었는데 그렇게 되면 가독성이 떨어져 보여 중괄호를 빼지 않고 써보았다. 나는 모두 소문자로 변환하여 비교했지만 반대로 모두 대문자로 변환하여 비교해도 무관하다.

BonusTrack02.dev
'프로그래머스' 태그의 글 목록