[BOJ] 백준 4195 친구 네트워크 (JAVA)
Algorithm/- Baekjoon2024. 4. 15. 01:45[BOJ] 백준 4195 친구 네트워크 (JAVA)

📑 문제 🌱 아이디어위 문제에서 친구가 된 순서의 정보를 차례차례 제공한다.그렇다면 단계마다 해당 친구가 속한 네트워크(집합)의 크기를 구하는 문제이다! 크게 생각해야 하는 점은 두 가지가 있다.1. 친구의 정보가 이름(문자열)으로 제공되는 점2. 친구 네트워크(집합)에 속한 크기를 구하는 방법. 1번의 경우는HashMap을 사용하여 key : 이름 -> value : 번호로 치환해서 유니온파인드 알고리즘을 실행하면 된다.당연히 해쉬맵에 이름이 있는지 판단해야 하고. 없다면 번호를 부여한다. 2번의 경우는유니온 파인드 알고리즘을 사용하고 그중 union 함수에서 두 노드의 부모노드가 다르다면? -> 서로 다른 노드임 -> 친구가 되었기 때문에 ans [부모노드] += ans [자식노드]로 업데이트 후..

[BOJ] 백준 1525 퍼즐 (JAVA)
Algorithm/- Baekjoon2024. 3. 19. 20:58[BOJ] 백준 1525 퍼즐 (JAVA)

📑 문제 🌱 아이디어"고민해도 안 나온다면 답지보고 내 것으로 만들자" 이 문제는 내가 여태까지 풀어왔던 알고리즘 지식 + 기법(?)으로  어떻게는 해결해보려고 했으나 다 실패했다.우울해하면서 결국 검색을 통해 코드를 봤다.HashMap으로 BFS 방문처리를 하는 코드였지만 정말 특이한 부분이 있었다 1차원 배열의 인덱스(문자열)를 2차원 배열로 변경해서 경로 이동후 다시 1차원 배열(문자열)로 변환 후HashMap을 통해 문자열을 저장하는 방법이었다 예를 들어문자열 str = "123456789"3*3 2차원 배열로 나타낼 때 1차원 배열 -> 2차원 배열Y = 3 / 3X = 3 % 3 숫자 4는idx ( 1 , 0 )에 위치하게 된다만약 X 축으로 +1을 해주고 idx ( 1 , 1 )로 이동했..

[BOJ] 백준 15663 N과 M(9) (JAVA)
Algorithm/- Baekjoon2024. 1. 29. 00:48[BOJ] 백준 15663 N과 M(9) (JAVA)

📑 문제 🌱 아이디어입력된 숫자의 모든 경우의 조합 중 중복 제거 + 사전순 정렬! 이 문제를 풀 때 모든 경우의 수를 HashSet에 넣고 정렬을 한다면 중복제거 + 사전순 출력으로 될 줄 알았다. 일단 필자는 문자열로 처리했고 문자열 정렬을 했다 하지만 제대로 정렬되지 않았다.  숫자를 문자열로 입력받고 Arrays.sort를 하면 제대로 정렬되지 않는다.그 이유는 "숫자의 사전순 정렬"과 "문자열의 사전순 정렬"의 개념이 다르다, 필자는 제대로 몰랐다.;; 입력값 = 100, 20 오름차순 정렬 시 숫자의 사전순 정렬 은 20 임으로  출력은 20 100이다.문자열의 사전순 정렬 은 20의 "2" 보다 100의 "1"이 사전 순으로 먼저이다. 즉 숫자 자체는 100이 크지만문자열 정렬 시 우선..

[BOJ] 백준 25206 너의 평점은 (JAVA)
Algorithm/- Baekjoon2023. 12. 11. 19:18[BOJ] 백준 25206 너의 평점은 (JAVA)

📑 문제🌱 아이디어평균학점을 구하는 공식만 안다면 전혀 어렵지 않은 문제이다. 하지만 위 지문을  잘 못 읽어서 "P", " F" 둘 다 제외하는 것으로 이해하고 말아 버렸다. 다음엔 또박또박 읽자. 요약하면 "F" 점수까지 계산 해줘야 한다.평균학점 = (과목평점*과목이수학점 +....)/총 이수학점 = 전공평점평균학점을 구하는 공식과 HashMap을 이용할 안다면 전혀 어렵지 않은 문제이다(성능도 높힐 수 있다.)  🌱 코드 및 풀이HashMap에 등급별 과목점수를 모두 저장한다. grade [i]. equals("P") key값이 "P"인 경우는 제외하고 file.get(grade [i])* num [i]에서 과목 평점을 계산합니다. 만약 sum == 0이라면 모든 과목이 "P" 등급이기 때문..

image