String[] arr = {"a","b","c"};
System.out.println(Arrays.asList(arr).indexOf("b"));
int from_num = 100;
String to_st;
to_st = Integer.toString(from_num);
int n=0;
n= Integer.parseInt(String);
replace는 문자열만 입력가능하고, 문자열만 반환가능함
replace는 정규식을 입력하여 문자열을 반환함
import java.util.LinkedList; //import
import java.util.Queue; //import
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
queue.add(2); // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가
queue.poll(); // queue에 첫번째 값을 반환하고 제거, 비어있다면 null 반환
queue.remove(); // queue에 첫번째 값 제거
queue.peek(); // queue의 첫번째 값 참조
queue.clear(); // queue 초기화
일반 배열은 크기가 고정되어있어 선언할 때 크기를 정하고 값을 미리 할당해야함
// 일반 배열
String[] arr = new String[5];
arr[0] = "1";
arr[1] = "2";
arr[2] = "3";
arr[3] = "4";
arr[4] = "5";
ArrayList는 유동적임
List<String> testList = new ArrayList<String>();
testList.add("1");
testList.add("2");
testList.add("3");
testList.add("4");
testList.add("5");
//Create an array
String[] arr = new String[1];
arr[0] = "1";
//Convert to ArrayList
List<String> testList = new ArrayList<>(Arrays.asList(arr));
Map에 배열을 넣기 위해서는 넣을 배열을 미리 생성해놓은 뒤, for문으로 할당하기
int arr[][] = {{3,1},{0,0},{0,1},{0,2},{1,0},{1,1},{1,2},{2,0},{2,1},{2,2}};
HashMap<Integer,int[]> keypad = new HashMap<>();
for(int i=0;i<arr.length;i++) {
keypad.put(i,arr[i]);
}
배열은 고정된 크기, 리스트는 유동적 크기
리스트는 ArrayList / LinkedList로 나뉨
리스트 원소 추가 add()/값 반환 get()
int num=0;
num = Math.abs(num);
num = Math.max(3,6); // 2개씩만 비교 가능
Loop1 :
for(int i=0; i<3; i++){
Loop2 :
for(int j=0; j<3; j++){
System.out.println("i="+i + " j="+j);
if (j==1){
break Loop1; // end of Loop1(i)
//break; // end of Loop2(j)
//break Loop2; // end of Loop2(j)
}
}
}
String.equals(String);
// 숫자를 문자열로 변환
String num = Integer.toString(3);
String toString_numbers = Arrays.toString(numbers);
// 문자열을 숫자로
Integer.parseInt(num);
import java.util.Arrays;
class Solution {
public int solution(String s) {
String[] arr= {"zero","one","two","three","four","five","six","seven","eight","nine"};
for(String str : arr) {
int idx = Arrays.asList(arr).indexOf(str);
s=s.replaceAll(str, Integer.toString(idx));
}
int answer = Integer.parseInt(s);
return answer;
}
}
import java.util.HashMap;
HashMap<String,Integer> map = new HashMap<>();
String[] arr= {"zero","one","two","three","four","five","six","seven","eight","nine"};
for(int i=0; i<arr.length();i++){
map.put(arr[i], i);
}
for (String key:map.keySet()) {
s = s.replaceAll(key,map.get(key));
}
import java.util.*;
class Solution {
public String solution(int[] numbers, String hand) {
String answer = "";
Queue<Integer> queue = new LinkedList<>();
// 스택에 데이터 추가
for(int i:numbers) {
queue.add(i); // 또는 offer()
}
// 양 손의 위치
// 일반 배열은 크기가 고정되어있지만 ArrayList는 크키가 고정되어있지 않기에 값을 추가하기 쉽다.
List<Integer> l_hands = new ArrayList<Integer>();
List<Integer> r_hands = new ArrayList<Integer>();
// 키패드에 따른 좌표
// Map에 배열을 넣기 위해서는 넣을 배열을 미리 생성해놔야 함
int arr[][] = {{3,1},{0,0},{0,1},{0,2},{1,0},{1,1},{1,2},{2,0},{2,1},{2,2}};
HashMap<Integer,int[]> keypad = new HashMap<>();
for(int i=0;i<arr.length;i++) {
keypad.put(i,arr[i]);
}
while(!queue.isEmpty()) {
int x= queue.poll();
if(x==1||x==4||x==7) {
l_hands.add(x);
answer+="L";
}
else if(x==3||x==6||x==9) {
r_hands.add(x);
answer+="R";
}
else { // 가운데 키패드 누르기, 더 가까운 손가락의 거리 구하기
int ky = keypad.get(x)[0];
int kx = keypad.get(x)[1];
int ly=0; int lx =0;
if(!l_hands.isEmpty()) {
ly = keypad.get(l_hands.get(l_hands.size()-1))[0];
lx = keypad.get(l_hands.get(l_hands.size()-1))[1];
}
else {
ly=3;
lx =0;
}
int ry=0; int rx=0;
if(!r_hands.isEmpty()) {
ry = keypad.get(r_hands.get(r_hands.size()-1))[0];
rx = keypad.get(r_hands.get(r_hands.size()-1))[1];
}
else {
ry=3;
rx=2;
}
if ( Math.abs(ly-ky)+Math.abs(lx-kx)>Math.abs(ry-ky)+Math.abs(rx-kx)) {
r_hands.add(x);
answer+="R";
}
else if ( Math.abs(ly-ky)+Math.abs(lx-kx)<Math.abs(ry-ky)+Math.abs(rx-kx)) {
l_hands.add(x);
answer+="L";
}
else {
if (hand.equals("left")) {
l_hands.add(x);
answer+="L";
}
else {
r_hands.add(x);
answer+="R";
}
}
}
}
return answer;
}
}
큐, ArrayList 제외
전역변수 left,right에 할당함으로써 List사용 안해도 됨!
import java.util.*;
class Solution{
public String solution(int[] numbers, String hand) {
String answer="";
int left =10;
int right = 12;
for(int num:numbers) {
if(num==1||num==4||num==7) {
answer+="L";
left = num;
}
else if(num==3||num==6||num==9) {
answer+="R";
right=num;
}
else { // 가운데 키패드 누르기, 더 가까운 손가락의 거리 구하기
if(num==0)
num=11;
int left_dist = Math.abs(num-left)/3 + Math.abs(num-left)%3; // 위아래 거리 + 좌우거리
int right_dist = Math.abs(num-right)/3 + Math.abs(num-right)%3;
if(left_dist<right_dist) {
answer +="L";
left = num;
}else if ( left_dist>right_dist) {
answer +="R";
right = num;
}else {
if(hand.equals("left")) {
answer+="L";
left = num;
}else {
answer+="R";
right = num;
}
}
}
}
return answer;
}
}
import java.util.Arrays;
class java0703_3 {
String[] arr= {"0","1","2","3","4","5","6","7","8","9"}; // contain() 를 쓰기위해 각 원소가 String 이어야 함
public int solution(int[] numbers) {
int answer=0;
String toString_numbers = Arrays.toString(numbers); // 숫자 배열을 문자열로 변환
for( String num: arr) {
if(toString_numbers.contains(num)) { // contain(String)
continue;
}else {
answer+=Integer.parseInt(num); // 문자열을 숫자로
}
}
return answer;
}
}
class Solution {
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for(int i=0;i<absolutes.length;i++) {
if(signs[i]) {
answer+=absolutes[i];
}else {
answer-=absolutes[i];
}
}
// // Or 삼항연산자 이용
// for (int i = 0; i < absolutes.length; i++) {
// answer += (signs[i]) ? absolutes[i] : -absolutes[i];
// }
return answer;
}
}
import java.util.*;
class java0703_5 {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int m : moves) {
m -= 1;
Loop1:
for (int i = 0; i < board.length; i++) {
if (board[i][m] != 0) {
if (!stack.isEmpty() && stack.peek()== board[i][m]) {
answer += 2;
stack.pop();
} else {
stack.add(board[i][m]);
}
board[i][m] = 0;
break Loop1; // 특정 반복문 중지
}
}
}
return answer;
}
}