본문 바로가기

개발공부/Java

[JAVA] 변수, 타입, 문자열 코플릿 문제

이번주부터 본격적으로 자바를 배우기 시작했다. 코플릿을 풀면서 개념을 적용해보는 활동을 했는데 자바를 이제 막 배우기 시작한 사람입장에서 바로 코딩테스트같은 느낌의 문제들을 풀라고 하니까 솔직히 좀 막막했다. 파이썬 프로그래밍 경험이 있지만 자바는 파이썬보다 훨씬 배우기 어렵다고 느껴진다ㅠㅠ 그나마 첫 문제들은 변수 선언과 초기화, 변수 타입 종류들 같은 부분에 대해 실습하는 것들이라 다행히 크게 어렵진 않았다. 

 

문제 수는 20개 가까이 되는데 그 중에 몇 문제만 꼽자면..

 

 

1. char (문자) 타입에서 int (정수)형으로 변환하기

char character라는 숫자 형태의 문자타입 변수에서 int형으로 변환해서 반환하는 문제였다. 먼저 int num;라는 새로운 변수를 선언하고, 

num = Character.getNumericValue(character); 라고 적어주면 변환이 가능하다. '.getNumericValue()' 메소드를 사용해서 숫자형태의 char형에서 int형으로 변환할 수 있다. 

 

 

 

2.  int형에서 char 타입으로 변환하기

이번엔 위의 경우와 반대의 경우이다. int num이라는 정수형 변수에서 char 타입으로 변환하는 문제이다. 변환을 위해 char character;라는 변수를 선언하고 character = Character.forDigit(num, 10); 이렇게 '.forDigit()' 메소드를 사용해서 변환할 수 있다. 

'.forDigit(char ch, int radix)' 를 사용하면 char 타입을 int형으로 변환할 수 있다. radix 자리에는 10진수로 반환하기 위해 10을 적었다.

 

 

 

3. 두 문자열의 평균 길이를 내림 연산해서 리턴하기

Math 클래스의 method를 사용해서 내림 연산을 해보는 문제였다. str1, str2 이라는 2개의 String 변수가 있을 때, 두 문자열의 평균길이를 구하고 그 값을 내림연산해서 반환해줄 수 있다. Math.floor(double형)를 쓰면 소숫점 부분을 내림 연산할 수 있다. 다만 문제 요구사항은 int형으로 반환하는 것이기때문에 반환할 때, return (int) Math.floor((str1.length() + str2.length()) / 2); 이렇게 써서 정수형으로 값을 반환하게 했다. 두 문자열의 길이를 구하는 것은 length()를 사용하고 평균을 나누기 2를 해줬다.

 

 

 

4. 두 개의 문자열이 같은지 비교하기

두 개의 문자열이 주어졌을 때 서로 같은지 비교해서 반환하는 문제였다. 자바에서는 대소문자 상관없이 문자열들을 비교할 때 '.equalsIgnoreCase()' 를 사용하면 된다. str1, str2라는 두 개의 문자열이 주어졌을 때, return str1.equalsIgnoreCase(str2); 를 사용하면 두 문자열이 같은지 비교할 수 있다.

 

 

 

5. 시간, 분, 초를 입력받아서 현재 시각 나타내는 메세지 리턴하기

이번에는 String.format을 사용해서 문자열의 형식을 정해서 원하는 형식으로 표현하게끔 하는 문제였다. String.format을 사용하면 원하는 형식으로 문자열을 표현할 수 있는데%s, %d 이런식으로 원하는 형식을 지정할 수 있다. %d는 10진수 정수로 반환한다는 뜻이다. d외에도 표현 가능한 데이터 타입 종류가 매우 많다. 예를 들어 '현재 시간은 몇 시 몇 분 몇초 입니다.' 라는 문장을 10진수 정수를 사용해서 시간, 분, 초를 반환하고 싶으면 시간, 분, 초를 입력받는 각각의 정수형 변수(hour, min, sec 이런식으로)를 선언하고 "return String.format("현재 시각은 %d시 %d분 %d초 입니다.", hour, min, sec);"이렇게 표현하면 원하는 결과를 얻을 수 있다.