
String 타입 변수 s로부터 문자열을 입력받아 공백을 기준으로 각 단어의 짝수번째 알파벳은 대문자(인덱스 번호 0은 짝수), 홀수번째 알파벳은 소문자로 바꾸어 반환하는 함수를 작성하는 문제이다. 코드를 보며 설명하도록 하겠다. s를 String 타입 배열 arr로 만들기 위해 split() 메서드를 사용하였고, 각 단어마다 홀짝 중 어떤 알파벳인지 확인하기 위해 count 변수를 선언하여 0으로 초기화하였다. 6 ~ 20번째 줄이 문자열을 변환하는 과정이다. 반복문의 범위는 배열의 처음부터 끝까지이고 공백을 기준으로 나누기 때문에 equals() 메서드를 사용한 것을 볼 수 있다. 이 부분에서 사실 많은 애를 먹었다. 처음 내가 작성했던 코드는 'if(arr [i] == (" "))'이었는데 계속해서..

int 타입 변수 n과 m을 입력받아 두 수의 최대공약수와 최소공배수를 구하여 배열로 반환하는 문제이다. 코드를 보며 확인해보도록 하겠다. 최대공약수와 최소공배수가 무엇인지에 대해서는 간단하게만 설명하겠다. 우선, 최대공약수는 임의의 두 수를 동시에 나누어 떨어지게 하도록 하는 숫자 중 가장 큰 수를 두 수의 최대공약수라 하고, 최소공배수는 두 수의 곱을 최대공약수로 나눈 것을 두 수의 최소공배수라고 한다. 다음은 코드를 보면서 설명하도록 하겠다. 어느 두 수의 최대공약수와 최소공배수를 구할 때 두 수를 동시에 나누어서 딱 떨어지는 숫자가 1을 제외하고 존재하지 않으면 두 수의 최대공약수는 1이 되고, 이때 최소공배수는 두 수의 곱이 된다. 하나의 예로 두 수 7과 11은 두 수를 동시에 나누어 떨어지게..

int 타입 변수 a와 b를 입력받아 두 변수에 저장된 값을 포함하여 사이에 속한 모든 정수의 합을 반환하는 함수를 작성하는 문제이다. 코드를 확인하며 설명하도록 하겠다. 3번째 줄의 코드를 보면 a와 b는 int 타입이지만 answer는 long 타입인 것을 확인할 수 있는데, 문제 설명에 a와 b는 -10,000,000 이상 10,000,000 이하인 정수라는 조건이 있기 때문에 a와 b 사이의 값들을 전부 합하는 과정에서 int 타입의 범위를 넘어서게 되는 경우가 존재하기 때문에 answer는 long타입으로 선언을 하였다. 첫 번째 제한 조건인 a와 b에 저장된 값이 동일할 시 아무거나 반환해도 된다는 조건으로 4 ~ 5번째 줄의 코드를 완성하였다. 6 ~ 7번째 줄의 코드들이 a와 b사이에 존재..

String 타입 변수 s에 저장된 문자열에 대소문자를 구분하지 않고 'p'와 'y'의 개수를 비교하여 같다면 true를 반환, 다르다면 false를 반환하는 문제이다. 코드를 보며 설명하도록 하겠다. 'p'와 'y'의 개수를 파악하기 위한 int 타입 변수 count1과 count2를 선언하고 0으로 초기화했다. 변수를 선언과 동시에 초기화하는 것은 습관을 들여놓는 것이 좋다. 초기화를 하지 않으면 변수에 'garbage'가 저장되어 있을 수 있기 때문에 에러를 발생시킬 수 있다. 5 ~ 10번째 줄의 코드들은 for 반복문을 통해 'p'와 'y'의 개수를 파악하는 문장이다. 먼저, 반복문의 범위를 인덱스의 시작인 0번부터 변수 s에 담긴 문자열의 크기 미만으로 잡았다. 이유는 인덱스의 시작은 0이기 ..

int 타입 변수 n으로부터 임의의 값을 입력받아 n에 저장된 값의 약수를 모두 더해 반환하는 함수를 작성하는 것이다. solution을 확인하기에 앞서 약수에 대해 먼저 설명하자면, 사전적 의미로는 어떤 정수를 나누어 떨어지게 하는 0이 아닌 정수라고 한다. 다시 말해, 약수는 1부터 자기 자신(n에 저장된 어떤 값)까지의 값들 중 어느 값이라도 자기 자신을 나누어 떨어지게끔 한다면 그 값은 n의 약수라는 뜻이다. 이제 solution을 보며 설명해보도록 하겠다. 약수는 어떤 정수(n에 저장된 값)를 나누어 떨어지게 하는 0이 아닌 정수를 칭한다고 하였다. n이 12라고 가정할 때 1부터 12까지의 수들 중 12를 나누어 떨어지게 하는 값을 찾기 위해 for 반복문을 사용하여 1부터 12까지의 모든 값..

오늘 이야기할 것은 StringBuilder이다. 이름을 들었을 때에는 String과 밀접한 관련이 있는 것처럼 느껴질 것이다. 그렇다면 StringBuilder란 무엇일까. 이것에 대해 알아보기에 앞서 String 타입으로 선언된 2개의 변수에 저장된 문자열을 서로 더할 때를 떠올려 보면 이럴 것이다. 두 문자열의 덧셈은 서로를 이어 붙이는 것과 같다. 단순하게 생각했을 때에는 str1과 str2를 더한 것으로 보이지만, 두 String 타입 변수를 더하게 되면 새로운 String을 생성하게 된다. 정리해서 말하자면 String 타입의 덧셈 연산을 수행했을 뿐인데 또 다른 String을 생성시킴으로써 메모리 할당과 메모리 해제를 발생시킨다. 단지 덧셈만을 하고 싶을 뿐인데 내부적으로 추가적인 작업이 필..