오늘은 비교적 간단한 문제를 풀어보려 한다. 문제 먼저 약수를 어떻게 구하지? 사실 되게 기초적인 내용이지만 몇 초안에 바로 답을 내기가 힘들었다. 그냥 배운지 너무 오래돼서 그런건가 싶기도 했다. 누가 보면 비웃을지도 모를만한 내용이지만 뭐 내가 그런걸 어쩌겠나 싶다. 다만 계속 노력할 뿐이다. 아무튼 약수를 구하는 법을 생각하다보니 그냥 나누어떨어지면 모두 약수라는 생각이 드디어 떠올랐다. 그럼 나누어 떨어지는 수를 찾으면 될 것인데 갯수가... 몇 개더라? 무슨 공식이 있었던 것 같은데 기억이 나지 않는다. 그냥 단순히 1부터 주어진 수까지 반복하면서 나머지 연산이 0이 되면 그 수는 약수이기에 리턴될 answer 변수에 더해주었다. 풀이 for문 안에 n까지 반복할 때 조건이 until이 아닌 ...
오늘은 처음으로 Level 2에 있는 문제를 풀어보았다. 그나마 풀만한 문제를 골라서 풀어봤는데 이 문제는 Level 2에서 가장 쉬운 문제가 아니었을까 싶다. 문제 문제를 보고 나서 전에 자바에서 배웠던 String의 split() 메소드가 생각이 났고 띄어쓰기를 구분자로 나누고 단어마다 첫 글자를 대문자로 바꿔주면 되겠다는 생각을 했다. 그런데 첫 글자를 대문자로 어떻게 바꾸지..? 라는 생각을 하다가 영어로 구글에 검색해보려고 검색어를 떠올리게 되었다. 영어로 대문자가 capital이니까 "kotlin caplitalize" 라고 검색을 해보니 코틀린 공식 문서가 나왔다! 다만, 안드로이드에서 흔하게 볼 수 있는 글자가 보였다. "Deprecated" 아니... 언제부터?? 1.5버전부터라고 한다...
오늘은 크게 어려운 점이 없어서 바로 본론으로 들어가면 될 듯하다. 문제 이번에 문제를 보고 생각한 풀이는 입력받은 정수를 문자열로 먼저 바꾸고 리턴될 타입이 정수형 배열이기 때문에 미리 리턴될 배열의 길이를 정해놓고 그 안에 요소를 하나씩 주어진 숫자의 역순으로 대입해주면 될 것이다. 풀이 먼저, n을 문자열로 저장할 numberToString 변수를 만들었다. 여기에 정수 n을 toString()으로 문자열로 변환해 대입해주었다. answer는 리턴될 정수형 배열로 만들어져있었지만 처음엔 intArrayOf()를 통해 만들어져 있었고, 이 때 배열의 길이를 정하려고 위처럼 numberToString.length를 파라미터로 주었지만 해당하는 숫자 하나만을 가진 길이 1짜리 배열이 생성되었고... 이를..
오늘 풀어본 문제는 2021 카카오 채용연계형 인턴십 문제였다. 이 문제를 풀 때 뭔가 코드를 더 간결하게 작성할 수 있지 않을까하면서 문제를 풀려다보니 내가 코틀린 지식이 부족한 탓에 해결하기가 힘들었다. 그래서 어떻게 보면 무식한? 문제를 푸는 입장에서는 쉬운? 코드로 풀어보았다. 문제 문제에서 입출력 예시를 봤을 때, 입력되는 문자열 s에서 영어로 된 숫자를 정수형 숫자로 바꿔주면 되는 문제였다. 게다가 문제에서 각 숫자에 대응되는 영단어도 표로 제시해주었기 때문에 나는 10가지의 상황만 고려하면 될 것이라 예상했다. 따라서, String형 temp 변수를 만들어 if문을 통해 10번의 검사를 거쳐 모든 영단어를 숫자로 만들어 대입했다. 완성된 temp 변수를 answer 변수에 Int형으로 변환해..
오늘 푼 문제는 이름만 봤을때는 되게 복잡할 것 같았는데 문제를 들여다보니 어려운 문제는 아니었다. 문제 생각해본 풀이는 먼저 absolutes와 signs 배열의 길이가 같다. 따라서, 이 두 배열로 만들 음수와 양수의 배열도 같은 길이이다. 정수형 배열을 하나 만들고 그 안에 absolutes와 signs 배열을 이용해 수를 집어넣고 그 합을 리턴하기로 했다. 풀이 일단 파라미터로 제공되는 두 배열 중 하나의 길이와 같은 정수형 배열을 하나 만든다. 반복문을 통해 만약 signs 배열 값이 true이면 absolutes 배열 값 그대로를 arr 배열에 대입하고, signs 배열 값이 false이면 absolutes 배열 값 * -1을 arr 배열에 대입한다. 순간, 음수를 만들어주는 메소드가 있나 쓸..
오늘 풀어본 문제는 상당히 간결했다. 문제 문자열의 길이가 파라미터로 주어지고 길이에 맞는 문자열을 리턴하면 된다. n이 홀수인지 짝수인지 판단하는 것이 먼저라고 생각했다. 따라서, if문을 사용해 홀짝 여부를 판단하고 그 안에서 리턴할 문자열을 처리했다. n이 짝수일 때는 n/2번만큼 "수박"을 반복해 문자열을 만들고 n이 홀수일 때는 n/2번만큼 "수박"을 먼저 반복하고 "수"를 마지막에 붙인 문자열을 만들어 리턴해주면 된다고 생각했다. 풀이
이번 문제는 생각보다 간단한 문제지만 문제를 풀 방법을 떠올리지 못한다면 시간이 다소 걸릴 것이다. (내 경험이다) 문제 처음 문제를 어떻게 해결할지 고민하다 떠올린 방식은 반복문을 사용해 없는 0~9 사이의 수를 찾아낸 다음, 더해야겠다고 생각을 했다. 그런데 일단 없는 수를 찾는 것이 비효율적이라 생각이 들었다. 문제에서 요구하는 리턴 값은 없는 수들의 합이기 때문이다. 따라서, '합'이라는 글자가 눈에 띄기 시작했고 이를 중심으로 해결책을 떠올려보았다. 먼저, 0~9 까지 모두 더하고, 있는 숫자들의 합을 빼면 없는 숫자들의 합이 나올 것이라고 생각했다. 풀이 그래서 리턴될 answer 변수에 바로 계산식을 대입했다. 하지만, 여기서 IntArray의 모든 요소를 더하는 메소드를 먼저 찾아보았다. ..
이번 문제는 사실 내가 진행했던 개인 프로젝트에 적용하고 싶었던 내용 중 하나이다. 사용자가 로그인하면 아이디나 이메일을 앞의 2~3자리를 제외하고 나머지 부분을 모두 *로 변환해서 게시글 작성자를 다른 사람들이 볼 수 있도록 하려고 했다. 그런데, 내 프로젝트를 보완하는 것도 중요하지만 요즘 더 중요하다고 생각되는 몇 가지 공부할 것들이 생겨서 우선 순위가 밀리게 되었다. 아무튼 문제를 살펴보자! 문제 먼저 입출력 자료형을 봤을 때 둘 다 String형이다. 그러고 나서 이 문제를 보니 단순히 맨 끝 4자리만 놔두고 그 전까지 반복문을 통해 *로 문자열을 바꿔주면 될 것이라 생각했다. 그래서 자바에서는 String형 변수의 인덱스에 해당하는 글자를 charAt() 메소드로 가져올 수 있었다. 코틀린에서..
이번 문제는 정수 제곱근이 있다면 제곱근 + 1의 제곱을 리턴하고 아니면 -1을 리턴하면 되는 문제였다. 문제 문제를 읽어보니 왠지 수학에 관련된 클래스를 사용하면 제곱근을 쉽게 구할 수 있을 것 같았다. 따라서, 코틀린에 부족한 나는 그 방법을 찾아보았고 math 클래스를 import하여 사용했다. 풀이 num변수를 만들어 sqrt()메소드를 사용한 이유는 sqrt()안의 파라미터를 Double이나 Float형으로만 삽입해야 되기 때문이었다. 따라서, sqrt() 메소드를 사용해 제곱근을 구했다. 테스트를 해보니 테스트 케이스 2번같이 3의 제곱근을 구하기 위해 sqrt()메소드를 실행하면 실제 그 제곱근을 리턴해주었다. 따라서, 이 때 리턴 값은 1.xxx가 나오는데 이를 어떻게 필터링할까 고민해보았..
최근 프로그래머스에서 레벨 1부터 차근차근 문제를 풀어보고 있는데 이 블로그에 기록하는 것이 내가 어떤 활동을 했는지 증명할 수 있는 수단이라고 생각이 되어 꾸준히 올려보려고 한다. 이번 문제는 읽어보니 사실 조금 헷갈렸는데 처음부터 천천히 읽어보면 이해 못할 문제는 아니었다. 먼저, 머릿속으로 생각했던 풀이법은 배열에서 "Kim"이 있는 인덱스를 찾으면 된다는 생각이었다. 간단하게 반복문으로 각 배열의 요소마다 "Kim"이 있는지 확인하고 그 인덱스 번호에 있다는 문자열을 리턴했다. 1번 풀이 먼저, 자바 스타일로 for문을 사용해 리턴할 String 변수 answer에 문자열 템플릿을 사용해 대입했다. 2번 풀이 이번에는 forEachIndexed 함수를 사용해 푼 같은 문제이다. forEach를 사..