수열과 구간 쿼리 2
풀면서 어려웠던 부분 : answer[i]의 값이 계속 조건에 만족하는 a[j]의 갚으로 덮어져서 문제가 계속 발생, 해당 부분을 해결하기위해 answer[i]의 초기화 값 위치가 중요 첫번째 if 조건에 충족하지 않는 경우 answer[i]의 값은 초기화값이므로 -1을 대입
수열과 구간 쿼리 4
풀면서 어려웠던 부분 : 문제에서 요구하는 인덱스 i자체가 기존 arr[i]를 요구하는 것 이므로, 새로 생성한 a에서 슬라이싱한 s를 더해줘야한다 ex) s = 2라면 a[0] = arr[0+2] 를 나타내는 것이다.
배열 만들기 2
- 사용명령어 : ArrayList<Integer> array = new ArrayList<>(); 풀면서 어려웠던 부분 : Math.pow(10,i)*5 로 풀어보려했으나 실패 쳇gpt가없었으면 구현못함
다른방법 :
i를 2진수를 반환받아 (1000, 1101... 등) 거기에 5를 곱하게되면 요구하는 값을 반환받게된다. 반환받은 수가 범위 안이면 리스트에 추가한다.
카운트 업
콜라츠 수열 만들기
- 사용명령어 : do-while문 → while조건이 참일때 do의 문장 반복 ArrayList 변환 : array.stream().mapToInt(Integer::intValue).toArray(); 내가 할 수 있는 방법 : ArrayList 사이즈의 배열을 만들고 하나씩 대입
글자 이어붙여 문자열 만들기 다른방법 : StringBuilder sb = new StringBuilder(); // 빈 StringBuilder 생성
// append 메서드를 사용하여 문자열을 뒤에 추가할 수 있습니다. sb.append("Hello");
// insert 메서드를 사용하여 특정 위치에 문자열을 삽입할 수 있습니다. sb.insert(5, ", World!");
// delete 메서드를 사용하여 특정 범위의 문자열을 삭제할 수 있습니다. sb.delete(5, 7); // "Hello, World!"에서 ", "를 삭제합니다.
// replace 메서드를 사용하여 특정 범위의 문자열을 다른 문자열로 대체할 수 있습니다. sb.replace(5, 6, "!"); // "Hello, World!"에서 " "를 "!"로 대체합니다.
// toString 메서드를 사용하여 StringBuilder를 String으로 변환할 수 있습니다. String result = sb.toString();
9로 나눈 나머지
※ 중요 체크 포인트 : charAt을 통해 c값을 가져 온 후 해당 문자 'c'를 int로 형변환 하게 되면 해당 문자의 유니코드값이 변하게 된다 그러므로 온전한 값을 얻기 위해서는 '0'을 빼줘야한다. 다른방법 :
문자열 여러번 뒤집기 - 내가 구현한 코드 → for문 안에서 StringBuilder이 계속 생성되며 초기화 되고있어 메모리 낭비 - 쳇gpt가 개선한 코드 → for문 밖에 StringBuilder의 초기화값을 두고 for문 안에 a.setLength(0);을 둬 객체를 초기화
- 사용명령어 : StringBuilder(setLength, append, reverse)