programmers

프로그래머스

[PCCP 기출문제] 1번 / 동영상 재생기 코틀린(Kotlin)

이번 문제는 설명을 쭉 읽어보니 해볼만 하겠다 싶은 문제여서 도전해봤는데약간씩 헤매는 과정을 거쳤다. 문제일단 배열을 제외하고 영상 시간을 정수로, 다시 정수에서 문자열로 변환하는 기능이 필요했다. 그래서 Kotlin에 있는 Extension function으로 만들어보기로 했다. 나머지 로직은 풀이와 같이 보자. 풀이먼저 getTimeInt 함수를 보자.간단히 문자열을 ":" 기준으로 쪼갠 후분 단위는 60을 곱하고 초 단위는 그냥 더해서 정수를 리턴해주는 함수이다. 이번에는 getTimeString 함수이다.특이점은 한자릿수의 경우 앞에 0으로 채워주는 것이 특징이므로String.format 함수를 사용해 포맷을 지정해주고 정수를 60으로 나눈 몫과 나머지를 각각 할당해주었다. 이제 실행되는 함수를 ..

프로그래머스

배열 조각하기 코틀린(Kotlin)

이번 문제는 배열 자르기를 연습하는 시간이 되었다. 물론 실제로 배열 자체를 잘랐다기보다는 리스트로 변형해서 잘랐지만 말이다. 문제홀짝 케이스마다 인덱스를 맞춰 잘라주면 되는 문제이다. 다만, 배열을 리스트로 변환한 뒤 subList를 사용할텐데 인덱스를 어떻게 주어야할지 고민이 필요한 문제이다. 풀이먼저 자르는 횟수는 query배열 길이만큼이기때문에 query에 forEachIndexed를 사용해주었다. subList를 활용하면 문제를 다르게 읽어야 할 필요가 있다. 먼저 짝수일 때는 query값을 포함하여 앞의 값을 남겨야 한다. 여기서 두번째 파라미터에 query배열 값 그대로를 넣게 되면해당 숫자까지 같이 잘리기 때문에 1을 더해주었다. 홀수일 때는 query값을 포함하여 뒤의 값을 남겨야 한다...

프로그래머스

전국 대회 선발 고사 코틀린(Kotlin)

이번 문제는 지나가다 정답률이 낮은 문제를 발견해 풀어보았다. 이전과는 다르게 두 가지 방식으로 문제를 풀어보았는데여러 자료형을 오가면서 풀어볼 수 있어서 나름 좋은 문제였다고 생각한다. 문제풀이 1. map -> list 변환가장 처음 생각한 방식이다. rank배열의 값과 인덱스가 모두 필요한 상황이었기 때문에 list만으로는 풀 수가 없다는 판단을 내렸다. 그래서 key, value로 저장할 수 있는 map을 선택했다. 이 때, rank배열의 각 값으로 key를 해당 index로 value를 지정했다. 그래야 참석 여부에 따라 map에 저장한 key로 정렬할 수 있기 때문이다. 정렬 이후에는 다시 리스트로 변환하여 가장 앞에서부터 3개의 값을 꺼내 값을 만들어 리턴해주었다. 풀이 2. list로 풀기..

프로그래머스

왼쪽 오른쪽 코틀린(Kotlin)

오늘 풀어본 문제는 코틀린에서 forEach를 사용해보고,여기서 continue와 break 역할을 어떻게 대체하면 좋을지 다시 복습해보는 과정이었다. 문제문제는 l과 r이 나오는 시점에서 배열을 좌우로 자르면 되는 문제이다. 다만 위에서 잠시 언급했듯 break와 continue를 사용해야하는 이유가 문제에 있다. 배열을 좌우로 자르는 시점에서는 break가,그렇지 않은 경우에는 continue가 필요하다. 풀이 먼저 forEachIndexed를 사용해 반복문을 대체 해주었고,이 때 기존 Java처럼 continue, break는 사용할 수 없기에run scope 함수로 감싸주었다. 그리고 나서, continue가 필요한 지점은 forEachIndexed를 리턴해주었고break가 필요한 지점은 run ..

프로그래머스

[PCCE 기출문제] 7번 / 버스 자바(Java)

최근 풀었던 기출문제 시리즈를 이어서 풀어보다저번에 풀었던 7번 문제와 비슷한 유형이라 다시 한 번 글을 올리게 되었다. 저번 문제도 비슷하게 기존에 정의된 함수가 있고정답을 리턴하는 함수에서 어떻게 호출할 지를 정했었다. 문제주어진 배열에서 On이면 승차 Off이면 하차임을 의미한다. 그리고 곧장 풀이로 넘어가서 설명을 같이해보겠다. 풀이먼저 num_passenger 변수에는 승하차로 인해 총 몇 명이 타고 있는지를 저장해야 한다. 여기서 사용할 수 있는 함수에는 func1,2,3,4가 있다. 여기서 3번은 하차하는 인원을 세는 함수, 4번은 승차하는 인원을 세는 함수이다. 그렇게 계산이 끝난 num_passenger 변수와기존 파라미터로 주어진 seat 수를 사용해 남은 좌석 수를 리턴하게 된다. 이..

프로그래머스

바탕화면 정리 코틀린(Kotlin)

오늘은 AI가 추천해준 문제를 풀어봤다.이리저리 생각하다보니 문제의 요구사항을 파악하는 것이 가장 오래 걸렸다.문제문제의 답을 한 줄로 요약해보면 파일이 있는 가장 작은 x, y값과 가장 큰 x, y값을 구하는 것이다.그렇게 숫자 네 개를 가진 정수형 배열을 리턴하면 끝이다.풀이가장 간단한 방법으로 생각한 것은 최솟값과 최댓값을 구하는 것이었다.내가 가진 값보다 더 작은 값이 있다면 내 값을 갱신하고내가 가진 값보다 더 큰 값이 있다면 내 값을 갱신하는 것이다.나는 if문을 통해 일일이 직접 비교해서 풀어보았다. 실행 결과다음에도 재밌는 문제를 풀어보기를 기대해야겠다.

프로그래머스

[PCCE 기출문제] 3번 / 수 나누기 자바(Java)

오랜만에 프로그래머스를 들어가보니 PCCE 기출문제가 추가되어 있었다. 그래서 순서대로 풀다 보니 블로그에 적어두어도 재밌을 것 같은 문제를 발견했다. 문제문제는 주어진 수를 2자리씩 끊어서 합치면 되는 문제였는데, 이 문제는 이미 작성된 코드 중 1줄만 수정하면 되는 문제이다. 풀이내가 변경한 것은 for문의 반복 횟수이다. 주어진 코드에서는 i 그런데 난 왜 굳이 5를 썼을까? 문제에서 주어지는 입력값의 제한사항이 2000000000까지이므로우리가 자릿수를 판별하기 위해 반복문 안에서 number /= 100을 통해 확인하는 최대 횟수는 5번이다. 따라서 i불필요한 반복문 실행을 할 필요는 없으니 문제에서 주어진 제한사항에 맞춰 풀었다고 보면 되겠다. 실행 결과

프로그래머스

문자 개수 세기 코틀린(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배열 값 중 하나였다. 풀이 주석 아래 코드는 첨부하지 않았는데 말로 요약하자면 이렇다. 간단히 갯수 최댓값에 따라 리턴값을 갱신하는 코드이다. ..

BonusTrack02.dev
'programmers' 태그의 글 목록