코딩테스트/JAVA

파이썬에서 넘어오며 헷갈리는 문법들

임지혁코딩 2024. 4. 20. 13:41

1. 배열

 

자바엔 [:]와 같은 슬라이싱 기능이나, A[3]과 같은 기능이 없다.

대신 STRING의 원소중 하나를 쓸 때는 . charAt(index)를 활용하자.

 

(문자열이 불변임에 주의하자. 문자열의 변수 변경이 불가하다.)

 

앞서 말한 슬라이싱은, substring(startindex,end)를 통해서 새로운 문자열을 생성하여 해결하자.

 

2. 문자열

 

문자열의 관점에서, 여태까지는 print()로 바로 출력했다.

이젠 ("a = " + a)로 출력하자 

(System.out.print(""))

 

문자를 대,소문자로 바꾸려면? ㅁ.valueOf().toUpperCase()로 변경하던지, (alist.toUpperCase()도 가능하다)

CHAR에 +32(대->소) -32(소->대)를 진행하자. 

 

String s = String.valueof(3) -> 3을, 문자열로 만든다.

 

 

파이썬이 코딩테스트용으로 버릇이 들어, 자꾸 int를 선언하지 않고 i=3과 같이 선언한다. 주의하자.

 

eqauls는 string에 적용하고.

int와 char은 ==로 비교하자. / char은 원시 데이터유형이고 string은 객체이므로.

 

문자열 (만!) 비교는. equals()사용. 

 

문자열에서 python처럼 "haha"*3을 하려면?

answer += "*".repeat(i)

 

3. 숫자

 

일단, long 그리고 double을 주로 활용하자.

 

python의 ** 는, math.pow(n,0.5)가 되어야 한다. 

 

int->long등 변환은, (long)으로 하자 .

(주의 ! (long)((x+1))로 해야한다. 왜냐면 long으로 형변환하는게 곱하기 보다 빠르므로, 이렇게 해야 실수가안나더라.

 

String을 -> INT 로 바꿀땐 Integer.parseInt(strings,x); //x는 진수의 의미를 지닌다.

LOng은 long.parseLong(). 아주 간단하다.

Int or Long을 -> string으로 바꿀땐 Integer.toString(intx) 

char을 int로 바꿀때는 ->  character.getNumericValue(charc) 

int를 char로 바꿀때는?- > (char) 로 간단하지만! 한글자임에 주의

 

String의 string[3]은 -> mystring.valueOf(3); -> 이건 string으로 다시 만드는 것이 된다. 

(즉, Char을 string으로 만들고 싶다면 String.valueOf(chara)를 하면 된다.)

뿐만 아니라, String.valueOf()로 거의 모든 객체를 string 화 할 수 있다. 이방법을 주로 활용하자. 

 

 

 

PYTHON 처럼 STRING의 한글자만 CHAR로 만들고 싶다면? -> mystring.charAt(index) 

 

 

 

4. 배열

배열은, length()가 아니라 length를 사용한다. 헷갈리지 말자. -> lenght는 속성이 된다. 

선언 + 초기화로 어느정도 잡아줘야 한다.

 

배열 정렬 -> Arrays.sort(배열)

선언해준다

 

 Arrays.sort(array); 로 정렬 (기본 오름차순)

 

?내림차순 정렬은?

이와 같이 정렬하자.

 

1. Integer[] myarr = Arrays.stream(원하는arr).boxed().toArray(Integer[]::new);

 

//손에 익히자!

 

배열에서 큰 수 찾기

 

 

 

5. max와 같은 연산함수

python에선 max로 바로 구했지만, 자바는 Math.max로 구한다. 

(java의 lang안에, 기본적인 math가 들어있다)

 

<최대 공약수>

gcd가 없어서.. a를 b로 나누다, 나눠지면 그 나눈걸로 다시 줄여가는 기법 . 

static으로 선언해 언제든 사용할 수 있게! 

 

6. 논리연산자

AND , OR은 없고 &&와 ||만 있다. 

 

7. Arraylist

기본적인 []형태는 불변의 객체라, 값을 꺼내올 수만 있고 append와 같은 방식이 불가하다.

 

이럴때 쓰는게. ArrayList -> 선언만 해주고, 원하는 값을 쓰면된다! 

 

 

 

add() ->append 처럼.

get(i)-> 해당 index 값 가져오기

size() -> length는 배열의 성질. length()는 string의 함수. 

이것처럼, arraylist의 길이를 가져올떈, size()함수로 가져와야 된다. 

 

8. LONG을 써야 하는 이유

 

문제 상황:

 500번 이상 넘어가면 탈출하는 것이 문제의 조건이었지만, 본인 코드에선 488번 이 지나면 바로 탈출해버렸다.

 왜그럴까를 찾아보다, 결과를 얻게 되었다.

 INT는 LONG에 비해 BYTE수가 적기 때문에, 특정 값을 넘어가면 표현되지 않는다.

 즉 기존 23412340 와 같은수가 더 적은 수로 표현되어, 488번 만에 통과되게 된 것. 

 

결론 : 큰 수를 다룰때는 , LONG의 사용을 습관화하자.