Java & Spring/코딩테스트

프로그래머스 - 기초트레이닝 3일차

DJ.Kang 2024. 5. 3. 02:50

 

 

  1. 수 조작하기 2
  2. 수열과 구간 쿼리 3
  3. 수열과 구간 쿼리 2
    풀면서 어려웠던 부분 : answer[i]의 값이 계속 조건에 만족하는 a[j]의 갚으로 덮어져서
    문제가 계속 발생, 해당 부분을 해결하기위해 answer[i]의 초기화 값 위치가 중요
    첫번째 if 조건에 충족하지 않는 경우 answer[i]의 값은 초기화값이므로 -1을 대입
  4. 수열과 구간 쿼리 4
    풀면서 어려웠던 부분 : 문제에서 요구하는 인덱스 i자체가
    기존 arr[i]를 요구하는 것 이므로, 새로 생성한 a에서 슬라이싱한 s를 더해줘야한다
    ex) s = 2라면 a[0] = arr[0+2] 를 나타내는 것이다.
  5. 배열 만들기 2
    - 사용명령어 : ArrayList<Integer> array = new ArrayList<>();

    풀면서 어려웠던 부분 : Math.pow(10,i)*5 로 풀어보려했으나 실패 쳇gpt가없었으면 구현못함


    다른방법 :
    i를 2진수를 반환받아 (1000, 1101... 등) 거기에 5를 곱하게되면 요구하는 값을 반환받게된다.
    반환받은 수가 범위 안이면 리스트에 추가한다.


  6. 카운트 업
  7. 콜라츠 수열 만들기
    - 사용명령어 : do-while문 → while조건이 참일때 do의 문장 반복
                           ArrayList 변환 : array.stream().mapToInt(Integer::intValue).toArray();
    내가 할 수 있는 방법 : ArrayList 사이즈의 배열을 만들고 하나씩 대입


  8. 배열 만들기 4
  9. 간단한 논리 연산
    사용한명령어 : ||(or)과 &&(and)
  10. 주사위 게임 3
     

    프로그래머스 - 주사위 게임 3

    https://school.programmers.co.kr/learn/courses/30/lessons/181916  코드 설명 : 입력받은 변수 a,b,c,d에 대하여 1차원 int 배열을 생성이중 for문을 통해 중복값을 찾아 카운팅해 경우의 수를 찾음count해설0모둔 주

    djhelloworld.tistory.com


    https://djhelloworld.tistory.com/60
  11. 글자 이어붙여 문자열 만들기

    다른방법 :

    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();


  12. 9로 나눈 나머지
    ※ 중요 체크 포인트 : charAt을 통해 c값을 가져 온 후 해당 문자 'c'를 int로 형변환 하게 되면
                                      해당 문자의 유니코드값이 변하게 된다 그러므로 온전한 값을 얻기 위해서는 '0'을 빼줘야한다.
    다른방법 :

  13. 문자열 여러번 뒤집기
    - 내가 구현한 코드
      → for문 안에서 StringBuilder이 계속 생성되며 초기화 되고있어 메모리 낭비

    - 쳇gpt가 개선한 코드
       → for문 밖에 StringBuilder의 초기화값을 두고
           for문 안에 a.setLength(0);을 둬 객체를 초기화
    - 사용명령어 : StringBuilder(setLength, append, reverse)

 

 

 

 

 

 

 

 

 

 

출처 : https://school.programmers.co.kr/learn/challenges/training?order=recent&languages=java&page=2