오늘 푼 문제는 이름만 봤을때는 되게 복잡할 것 같았는데 문제를 들여다보니 어려운 문제는 아니었다. 문제 생각해본 풀이는 먼저 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를 사..
오늘은 취업을 준비하며 코딩 테스트를 대비하기 위해 프로그래머스에서 문제를 풀어보며 오늘 풀이를 공유해보려 한다. 먼저, 어떻게 풀어야할지 고민해보았다. 단어의 길이가 홀수이면 s/2 + 1번째 글자를 리턴하고, 짝수이면 s/2, s/2 + 1번째 글자를 리턴하면 된다는 생각을 했다. 문제에서 주어진 두 케이스에서도 보면 abcde는 3번째 글자를 리턴, qwer은 2, 3번째 글자를 리턴한다. 따라서, 나는 먼저 내가 알고 있는 방식으로 코드를 짰다. 다른 코틀린에 능숙한 분들은 훨씬 간결한 코드를 짤 수 있었겠지만 나는 아직 부족하기 때문이다. 주어진 answer 변수는 기본으로 주어지는데 리턴 타입이 String이기에 짝수, 홀수에 따라 리턴하는 문자열을 answer 변수에 대입하여 리턴하도록 설계..
오늘은 자바에서 가장 중요한 것들 중 하나인 상속에 대해 적어보려 한다. 먼저 상속이 뭘까? 상속은 다른 클래스의 설계도를 가져와 새로운 기능을 추가하는 기법이라고 할 수 있겠다. 이 상속 관계에 대한 호칭은 언어마다 다른데 주로 사용되는 호칭을 몇 개 나열해보면 상위 - 하위 부모 - 자식 슈퍼 - 서브 정도가 있겠다. 자바에서 공식적으로 사용하는 호칭은 슈퍼 - 서브인데 개발자들은 부모 - 자식으로도 많이 얘기한다고 들었다. 상속받은 클래스(자식)의 객체를 만들면 자동으로 상속해준 클래스(부모)의 객체도 내부에 같이 생성된다. 이러다 보니 내가 상속받아온 클래스의 멤버를 마음대로 사용 가능하다. 하지만, 저번 글에서도 소개했듯이 객체지향 프로그래밍에서는 멤버 변수를 직접 .연산자를 통해 제어하는 것을..
오늘은 제목 그대로의 상황을 살펴보도록 하겠다. 먼저 Main.class와 별개로 Person, Member라는 클래스를 만들었고 Member 클래스에는 Person 클래스의 참조변수가 있다고 염두해두자. 이 예제는 임의로 같은 패키지안에서 작업했다. 먼저 Person 클래스이다. public class Person { String name; int age; //생성자 : Constructor public Person() { name = "익명"; age = 0; } public Person(String name, int age) { this.name = name; this.age = age; } //멤버값을 출력하는 메소드 void show() { System.out.println("name : " +..
static 키워드는 C언어에서도 있던 키워드이다. static은 그럼 대체 왜 사용하는걸까? 첫 번째로 객체를 생성하지 않고도 변수를 사용하고 싶을 때 사용한다. 이 녀석은 객체가 생성되지 않아도 먼저 존재하기 때문이다. 두 번째는 같은 클래스의 객체가 모두 같은 값을 공유하고 싶을 때 사용한다. 그럼 static 키워드는 대체 어디에 쓸 수 있을까? 당연히 변수에 쓸 수있다. 그리고 객체를 생성하지 않고도 사용할 수 있는 메소드가 있다. 이 녀석은 당연히 static 메소드이다. 또, class에도 static을 붙일 수 있다. 단, inner class일때만 가능하다. Test class라는 예를 통해 static 키워드에 대해 조금 더 자세히 알아보자 public class Test { publi..