프로그래머스

프로그래머스

점의 위치 구하기 코틀린(Kotlin)

오늘은 정말 오랜만에 프로그래머스에 들렀다. 새로운 문제가 나와서 풀어보았다. 문제 한 문장으로 문제를 표현하면 좌표가 어느 사분면에 있는지 숫자로 리턴하는 문제이다. 조건문을 어떻게 하면 짧게 쓸 수 있을까 고민해보았다. 사분면마다 x와 y값의 양수 음수 여부를 판단해 리턴하는 것은 코드가 매우 길어질 것 같았다. 그래서 일단 x와 y값을 곱한 값이 양수인지 판단해 크게 1, 3분면과 2, 4분면으로 나눴다. 그 다음, x좌표의 부호(양수인지 음수인지)에 따라 사분면을 구분했다. 풀이

프로그래머스

피자 나눠 먹기(3) 코틀린(Kotlin)

이번 글이 피자 나눠 먹기 문제 시리즈의 마지막이다. 문제 먼저, 사람이 최소 피자 한 조각을 먹는다는 조건을 생각해야 했다. 여기서 slice에 곱한 값이 n보다 크면 무조건 n명의 사람은 피자를 한 조각 이상씩 먹을 수 있다. 그래서 for문을 사용해 1부터 1씩 증가하는 조건을 사용하려 했는데 마지막 숫자를 정하기가 애매했다. 100을 써도 1000을 써도 되지만 최댓값을 너무 크게 잡고 싶지 않았다. 그래서 문제의 제한사항에 있는 각 변수의 조건을 생각해봤다. for문이 가장 많이 실행될 때의 i값이 뭘까? slice가 최솟값, n이 최댓값이라면 i값이 최대일 것이다. 이 때, i는 50이기 때문에 for문을 1부터 50까지만 반복하도록 했다. 그 다음, for문 안에서 if문을 통해 위에 적은 ..

프로그래머스

피자 나눠 먹기(2) 코틀린(Kotlin)

이번 문제는 저번 피자 문제 1번에 이어 같은 시리즈의 문제이다. 저번 문제에서는 피자를 7조각으로 잘라주었는데 이번엔 6조각으로 잘라준다. 그리고 내 개인적인 생각으론 문제 난이도가 어렵다기 보단 조금 헷갈리게 만든 것 같다. 문제 먼저 피자가 남지 않고 모두 같은 수의 피자를 먹어야 한다니 여섯 조각으로 오는 피자가 6의 배수일 수 밖에 없었다. 그런데 최소 주문 수량도 고려해야 했다. 따라서 주어지는 n이 1부터 100까지이기 때문에 단순히 반복문을 1부터 100까지 실행하다 최소 주문 수량을 찾으면 break를 거는 방식을 사용하기로 했다. 풀이 여기서 i를 1부터 100까지 1씩 증가시키기 때문에 당연히 가장 먼저 if문에 걸리는 값이 최소 값일 것이다. 이 때, 리턴해야할 answer 값이 최..

프로그래머스

피자 나눠 먹기(1) 코틀린(Kotlin)

이번 문제는 0레벨에 있는 문제 시리즈 중 하나인데 최근 푼 문제 중에 가장 재밌었다. 문제 가장 먼저 7조각의 피자를 인원 수에 딱 맞게 시킬 경우와 그렇지 않은 경우를 판단해야 했다. 7의 배수라면 7*X와 같이 총 조각 수가 나오게 될 것이고, 피자는 X판을 주문하면 됐다. 나머지 경우는 한 판을 여유롭게 시켜야 했다. 그런데 이렇게 생각할 경우 n이 7 미만일 때가 애매했다. 풀이 그래서 인원 수에 맞게 주문할 경우와 아닌 경우는 %연산자를 통해 7의 배수인지 확인했고, 나머지 경우에서 주문할 피자 수를 구할 때는 n을 7로 나눈 몫을 사용하면 n이 7 미만이어도 이미 +1을 해두었기 때문에 문제가 없었다.

프로그래머스

짝수는 싫어요 코틀린(Kotlin)

오랜만에 코딩 문제를 풀어보려하니 생각보다 머리가 안 돌아간다. 그래서 다시 낮은 레벨부터 시작해보기로 했다. 문제 풀이 먼저 1부터 입력된 n까지 반복문을 통해 홀수를 찾는 것을 목표로 했다. 이 때, 반복문을 1부터 n번 반복할 필요는 없다고 생각했다. 홀수 찾기가 목표이기에 2씩 건너뛸 방법을 찾아보았다. 내가 찾은 방법은 for문에서 step을 사용해 해결할 수 있었다. 그 다음 찾은 홀수를 어떻게 배열에 담을까 고민하다 이전에 List를 Array로 만들어 리턴해 주기로 했다. List를 사용한 이유는 Array의 크기는 수정할 수 없고, for문 안에 사용된 i를 통해 간단히 Array의 index에 접근하기에는 무리가 있었다. 문제에서 Array를 오름차순으로 리턴하라고 했지만 for문을 1..

프로그래머스

문자열 다루기 기본 코틀린(Kotlin)

오늘은 레벨1에서 정답률이 높은 편에 있던 문제를 풀어보았다. 문제 이 문제는 문자열 길이만큼 반복문을 사용해 각 자리가 숫자인지 판별하고 숫자가 아니면 false를 숫자이면 true를 반환하면 되는 문제였다. 풀이 이 문제에서 반복문을 사용할 때 라벨을 사용해보았다. 주어진 s의 길이만큼 반복하며 숫자인지 확인하고 숫자가 아니라면 break를 사용해 반복문을 종료하기 위해 라벨을 loop라는 이름으로 지어줬다.

프로그래머스

제일 작은 수 제거하기 코틀린(Kotlin)

오늘은 오랜만에 문제를 풀어보게 되었는데 사실 이 문제를 풀면서 또 다시 공식 문서의 중요성을 깨닫게 되었다. 문제 사실 굉장히 간단한 문제라고 생각했다.(공식 문서의 중요성은 조금 뒤에 말해보겠다) 일반적인 경우, 전달된 배열을 리스트로 바꾸고 최솟값을 제거한 뒤 다시 배열로 만들어 리턴하면 되고, 배열의 길이가 1인 경우 곧바로 -1만 들어있는 배열을 만들어 리턴하면 된다. 풀이 최종 정답을 받은 풀이는 위 사진의 코드이다. 하지만, 이전 코드는 약간 달랐다. 차이점도 있었고, 에러가 났던 부분도 설명해보겠다. class Solution { fun solution(arr: IntArray): IntArray { var answer = intArrayOf() if (arr.size == 1) answe..

프로그래머스

가운데 글자 가져오기 스위프트(Swift)

이번엔 코틀린으론 쉽게 풀었던 가운데 글자 가져오기 문제를 풀어봤다. 야곰님 부스트코스 강의를 들으며 하나씩 풀어보고 있는데 코틀린에서 문자열 템플릿을 사용한 것처럼 여기서는 문자열 보간법을 사용해 풀어보았다. 문제 오죽 쉬웠으면 내가 프로그래머스에서 가장 먼저 풀어본 문제인가 싶다. 하지만, 스위프트로 풀기엔 코틀린보다 까다로웠다. 코틀린에서는 String에서의 index를 정수로 가져왔는데 Swift에서는 같은 방식으로 불러올 수 없었다. 풀이 if-else 구문을 사용해 문자열의 길이가 짝수인지 홀수인지 먼저 검사하고 짝수라면 중앙의 2글자, 홀수라면 정중앙의 1글자만 가져오면 된다. 일단, 문자 하나를 인덱스를 통해 가져오려면 코틀린처럼 s[index]와 같은 형식은 불가능했기 때문에 다른 함수를..

프로그래머스

나머지가 1이 되는 수 찾기 스위프트(Swift)

오늘은 전에 풀었던 문제의 재탕이다. 왜 이런 쓸데없는 짓을 하냐고 할 수도 있지만 나름 이유가 있었다. 추후, 따로 글을 작성해보겠다.. 문제 풀이 가장 앞에서 말했듯이 이미 코틀린으로 한 번 풀었던 문제지만 그대로 Swift언어로 작성해보았다. 먼저, 기존에 쓰던 코틀린과 달리 for문을 사용할 때 조건식에 괄호가 필요없다. 게다가, 코틀린에서는 for문의 실행문이 1줄이라면 중괄호를 생략할 수 있었지만 Swift는 무조건 중괄호가 필요했다. 생각보단 언어가 어색하다. 그래도 React Native를 접해본 경험은 있어 어색하지 않으리라 생각했는데 React Native에 관심이 없어서 그랬는지.. 암튼 조금 친해질 시간이 필요한 것 같다.

프로그래머스

시저 암호 코틀린(Kotlin)

오늘 풀어본 문제는 보자마자 문자형을 바탕으로 해결하면 되겠다는 생각이 들었다. 문제 C언어를 배울 당시 아스키 코드에서 대문자는 65부터 90까지, 소문자는 97부터 122까지의 번호였다. 이와 유사하게 유니코드에서도 숫자는 약간 다르지만 대문자, 소문자끼리 연속된 번호를 사용 중이었다. 하지만, 위의 2줄은 사실 큰 의미가 없었다.. isUpperCase(), isLowerCase() 메소드로 문자 하나가 대문자인지 소문자인지 구별할 수 있기 때문이다. 풀이 리턴될 answer 변수에 주어진 s의 0번 인덱스부터 각 문자의 대소문자 여부를 검사하고 n만큼 민 문자를 더해주었다. 그리고, 만약 문자에 띄어쓰기가 나오면 answer 변수에도 똑같이 띄어쓰기를 더해주었다.

BonusTrack02.dev
'프로그래머스' 태그의 글 목록 (5 Page)