반응형
💡 3차원 벡터 정의
vector<vector<vector<int>>> arr

 

 

💡 3차원 벡터 resize() 함수 사용
//n,m,h

arr.resize(n, vector<vector<int>>(m, vector<int>(h)));

 

 

💡 쌍 pair
queue<pair<pair<int,int>, int>> q;
반응형
반응형
💡 map
  • map 자료구조는 <키, 값>의 쌍으로 이루어진 자료형이다.
  • map<int, int> m 으로 키와 값이 모두 int 타입인 map 자료구조를 하나 생성하였다고 가정하자.
  • map은 키를 마치 인덱스처럼 사용할 수 있다.
  • map[-1]은 키가 -1인 요소의 값을 리턴하게 된다.
  • 만약 키값이 map에 존재하지 않은 새로운 값이라면, map[1]++ 을 했을 때 map에는 키가 1인 요소가 생성되고, 값은 0으로 자동 초기화 된다. 그리고 ++ 증가 연산자를 사용했기 때문에, map[1]은 1의 값을 갖게 된다.
  • 따라서 map의 경우 insert로 값을 직접 넣지 않고도, map[키]=값 으로써 요소를 추가할 수 있다.  

 

반응형
반응형
💡 printf문에서 소수점 이하 n째자리수 까지 출력하는 방법
float grade, sum;
//grade, sum 초기화

printf("%.6lf", grade / sum);
//grade/sum을 소수점 이하 6자리까지 출력한다
//이때 lf로 쓴다

 

  • 여기서 %lf는 double 형식의 변수를 출력하라는 의미이다.
반응형
반응형

 

자바 문법 공부 겸 정리한 글

 

String

 

string이 아님. String임!!

String str = "apple";

str.length();//문자열 길이 반환

str.isEmpty(); //빈 문자열 체크

str.charAt(0); //0번째 문자 반환=>'a'
str.indexOf("a") // 가장 먼저 나오는 a의 인덱스 반환=>0
str.lastIndexOf("p") //마지막 p의 인덱스를 반환 =>2

str.substring(1,3) //1번 인덱스부터 3 미만의 인덱스까지 자르기=>pp
str.substring(3) // 인덱스 3 미만 문자열 반환 => app

str.replace('p','e') // 모든 기존문자 p를 e로 바꿈=> aeele
str.replaceFirst('p','e')//첫 p만 e로 바꿈=>aeple

str.equals("apple")//값 비교를 위해 equles사용

str.contains("app"); // 문자열이 app를 포함하는지

str.split(" ") // 공백으로 구분된 문자열을 분리하여 String[]배열로 반환
str.split()//한 문자씩 분리하여 String[]로 반환

Integer.parseInt("100"); // 문자열 100을 숫자 100으로 변환
Integer.toString(100) // 숫자 100을 문자열 100으로 변환

Integer.parseInt(문자열)
Integer.toString(숫자)

 

 

StringBuilder


문자열의 변경이 필요한 경우에는  StringBuilder사용하기

유용해 보이는 것
StringBuilder sb = new StringBuilder();

st.append("apple"); //st에 apple 추가하기
st.reverse(); //st문자열 뒤집기

 

List


List관련 메서드
리스트는 List로 만들어서 생성자는 ArrayList로 받기
List<String> list = new ArrayList<>();

list.add(값) //요소 추가
list.add(인덱스, 값) //특정 인덱스에 값을 추가
list.addAll(list2) //리스트 병합
list.indexOf(값)
list.remove(값)
list.clear()
list.isEmpty()
list.size()
list.contains(요소)->bool타입
list.removeIf(x->x%2==0)//짝수 제거: 람다식 이용

배열을 리스트로 변환
int[] temp = {1,2,3};
List<Integer> list = new ArrayList<>(Arrays.asList(temp));

리스트를 배열로 변환
List<Integer> list = new ArrayList<>();
int[] temp = list.stream().mapToInt(x->x).toArray();

배열의 정렬을 하려면 Arrays.sort를 쓰면 되고, 인자로는 배열 넘겨주면 됨.
  

반응형

'언어 > JAVA' 카테고리의 다른 글

[JAVA] Scanner 클래스를 이용한 "입력 받기"  (0) 2023.11.03
반응형

JAVA에서 입력을 받을 때 사용하는 클래스가 Scanner이다.

java.util에 정의되어 있다.

 

입력 시 다음과 같이 쓸 수 있다.

Scanner scanner = new Scanner(System.in);
String st = scanner.nextLine();

 

일단 scanner 객체를 하나 생성하고 자바의 표준 입력 스트림인 System.in으로 받은 입력 값을 scanner에 저장한다.

그리고 scanner의 nextLine()함수를 통해 입력받은 값을 st에 저장해 주는 것이다.

 

이어서 입력하고 싶다면?

scanner를 새로 생성하지않고, 바로 scanner.nextLine()을 호출하면 된다.

그리고 다 입력한 후에는 scanner.close()를 통해 입력스트림을 종료한다.

 

 

반응형

'언어 > JAVA' 카테고리의 다른 글

[JAVA] 코테 준비를 위한 JAVA 기본 문법  (0) 2023.11.03
반응형

소프티어 lv2 "금고 털이" 문제 풀이 중 pair vector와 sort사용이 익숙치 않아 정리하는 글이다.

 

pair vector
vector<pair<int, int>> v;

vector에서는 한 요소에 두가지 값을 함께 넣으려면, 위와 같이 pair로 묶어서 정의해 주어야 한다.

"금고 털이" 문제에서 첫번째 int 요소에는 금속의 무게를 , 두번째 int 요소에는 금속의 가치를 저장해주었다.

각각의 값에 접근하려면, v.first, v.second로 접근할 수 있다.

 

sort

algorithm에서 정의한 정렬 함수 sort이다.

기본적으로 오름차순 정렬이고, pair vector의 경우 첫번째 값을 기준으로 오름차순 한다.

sort(v.begin(), v.end());

이렇게 하면 vector v를 첫번째 값인 금속 무게에 대해서 오름차순 정렬해준다.

 

그런데 나는 금속의 가치인 두번째 값에 대해서 내림차순 정렬하고 싶었다.

그래서 sort함수에, 따로 정의한 비교함수를 인자로 넣어, 이 기준으로 정렬해 주세요~라고 요청했다.

bool compare(const pair<int, int> &a, const pair<int, int> &b){
	return a.second>b.second;
}

 위와 같은 compare 함수를 정의해 주었다.

내가 헷갈렸던 점은, 부등호의 방향이다. 

처음에는 b쪽에 크다고 했는데, 이유는 정렬할 때 뒤에 있던게 컸었다..라고 생각한 것이다. 아무튼 나의 착각이고..

내림차순이 앞이 큰거니까, 먼저 위치한 a가 클 때 true로 정의해 주는 것이다.

반대로 오름차순이면? b쪽으로 부등호가 향해야 할 것이다.

 

이렇게 해서 기본 of 기본인 pair vector와 sort함수에 대해 정리해보았다.

다음에는 버벅거리지 않고 바로 구현하길~

반응형

+ Recent posts