일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dp
- HashSet
- 백준 1647번 도시 분할 계획 - java
- 백준 1043번 거짓말 - java 분리 집합
- 백준 1541
- 프로그래머스 java
- 백준 2467번 용액 자바 - 이분탐색
- 최소 힙 1927
- toUpperCase
- 18111번 마인크래프트 - java 구현
- 프로그래머스 자바
- 코틀린기초
- 백준 1197번 최소 스패닝 트리 - java
- StringBuilder
- 백준 2473번 세 용액 - java
- Stack
- 백준 3190번
- 백준 14938번 서강그라운드
- HashMap
- StringTokenizer
- Java
- kotlin
- replace()
- append
- map
- mysql hy000 에러
- 프로그래머스
- hash
- 백준 1806번 부분합 java
- ac 5430번
- Today
- Total
말하는 컴공감자의 텃밭
Java 형 변환, 메서드 (프로그래머스 입문 equals, split, Arrays.sort 본문
프로그래머스 문제를 푸는데 오랜만에 java를 해서 형변환이랑 메서드가 헷갈려서 정리합니다.
진짜 여태 살면서 뭘한거지 후후
프로그래머스 쉬운 문제들을 예시로 하나하나 정리해 봅니다.
https://school.programmers.co.kr/
먼저 자바에서 형변환도 헷갈려서 간단하게 정리해 봅니다.
- Integer : 정수를 다루기 위한 클래스
- Char : 문자 1개를 다루기 위한 자료형
- String : 문자열을 다루기 위한 클래스
로 간단하게 나눌 수 있습니다. // 물론 정수형과 실수형 변환도 있습니다. //
먼저 Int형에서 String형으로 변환하려면 .toString() 사용해 줍니다.
Char형으로 변경하려면 char()을 사용해줍니다.
char형에서는 두 가지 경우로 나눴는데요, 숫자가 담겨있어도 아스키코드로 담겨있어서 주의해야 합니다.
// 후후 이게 갑자기 헷갈렸지 모야
숫자가 있는 경우와 문자가 들어가 있는 경우로 나눠봤는데요. ch에는 '3'이 담겨있고, ch1에는 'a'와 'b'가 있습니다.
int형으로 바꾸려는 경우에 (int)를 사용해 주시면 되는데, 숫자 3이 아닌 아스키코드이기 때문에 '0'을 빼주어야 합니다.
아스키코드 표를 살펴보면 문자 0 ~ 9는 48 ~ 57기 때문이에요.
String형으로 변환하는 경우. valueOf()를 사용해 줍니다.
마지막으로 String형에서 Int형과 char형으로 변환하는 경우입니다.
Integer.pasrseInt()와 Integer.valueOf()를 사용하여 Int형으로 변환할 수 있습니다.
char형으로는 .charAt()로 변환이 가능하고, 배열에 넣으려면 .toCharArray()를 통해 넣을 수 있습니다.
이걸 까먹어서 문제 하나에 30분 잡아먹고 그랬네요...
이젠 까먹었던 메소드들 equals, split, Arrays.sort 를 프로그래머스 문제를 풀어보면서 써보려합니다 ><
// 다 푼거에서 찾는것도 일이네요
.equals 는 문자열을 비교해주는 친구입니다. 문제랑 함께 볼게요.
문제를 보게되면 배열이 얼마나 유사한가 를 확인하려합니다. 그렇다면 배열 두개가 필요할거고 비교하는 메소드인
.equals()가 쓰이겠죠.
s1과 s2에 담긴 정보를 하나하나 비교하고, 반복문을 통해 일치하는경우 result값을 올려주면 되겠네요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Solution { public int solution(String[] s1, String[] s2) { int answer = 0; for(int i=0; i<s1.length; i++){ for(int j=0; j<s2.length; j++){ if ( s1[i].equals(s2[j]) ){ answer++; } }} return answer; } } | cs |
얍~! 간단쑤
다음으로는 split() 입니다. 문자열에서 나눠주는 친구인데요 괄호에 조건을 넣어서 사용합니다.
또 예제를 풀어보면서 볼건데요 .equals() 도 사용하는 문제네요.
my_string에 문자열이 들어오고 ex) "3 + 4" 해당하는 수식의 값을 정수로 출력하는 문제네요.
연산자는 +, - 만 존재하기 때문에 +가 있는경우와 -가 있는 경우를 나누어주고, my_string.length만큼 반복하여 수식을 완성하면 되겠네요.
띄어쓰기로 숫자와 연산자가 구분지어지기 때문에 split(" ") 를 통해 띄어쓰기를 만나는 경우 구분을 짓게 해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Solution { public int solution(String my_string) { int answer = 0; String[] arr = my_string.split(" "); answer = Integer.parseInt(arr[0]); for (int i = 1; i<arr.length; i ++){ if( arr[i].equals("+")){ answer += Integer.parseInt(arr[i+1]); } else if (arr[i].equals("-")) { answer -= Integer.parseInt(arr[i+1]); } } return answer; } } | cs |
앞서 보았던 Integer.pasrsInt()도 사용이 되었네요.
// array[ i + 1] 인 이유는 연산자 다음 차례에 숫자가 들어가기 때문입니당.
마지막으로 Arrays.sort() 친구 입니다. 배열을 오름차순으로 정리해주는 친구인데요, 예제로 보시죠
sides[] 배열에 각 변이 들어가고, 삼각형을 만들 수 있으면 1, 불가능하면 2를 출력하는 문제입니다.
배열을 정렬하면, 가장 큰 변이 맨 뒤인 sides[2] 일테니 sides[2] 랑 sides[0] + sides[1]을 비교하면 되겠네요
꼭 Array.sort()를 사용안해도 되는 문제긴 하지만 활용할 문제가 안보이네요...ㅠ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import java.util.*; class Solution { public int solution(int[] sides) { int answer = 0; Arrays.sort(sides); int a = sides[0]+sides[1]; if (sides[2]<a){ answer = 1; } else answer = 2; return answer; } } | cs |
따란. ★
'알고리즘 > Programmers - Java' 카테고리의 다른 글
프로그래머스 - 폰켓몬 자바(java) Hash (0) | 2023.04.26 |
---|---|
프로그래머스 - 두 개 뽑아서 더하기 (자바) java Hashset (0) | 2023.04.24 |
프로그래머스 문자열 겹치기 - 자바(java) replace, StringBulider (0) | 2023.04.21 |
프로그래머스 외계어 사전 - 자바(java), HashSet (1) | 2023.04.21 |
프로그래머스 - 대소문자 바꿔서 출력하기 자바(java) (0) | 2023.04.20 |