[Algorithm] 99클럽 코테 스터디 14일차 TIL | 백준_오목(2615번)
·
Algorithm
https://www.acmicpc.net/problem/2615  오늘도.. 시간을 save 하지 못했다..ㅜ 오목 문제라 문제 자체를 이해하는 데는 무리 없었지만 이를 구현함에 있어서 여러 고비가 있었다 8방향을 모두 검사하려 했으나 어차피 왼쪽 가장 첫 번째 돌만 구하면 되니 오른쪽 위, 오른쪽, 오른쪽 아래, 아래 방향만 검사한다. 재귀를 돌릴 때도 같은 방향에서만 돌린다. 가장 골치아팠던 문제는 육목 검사였다.같은 방향에서 길이가 5가 나오면 오목이거나 오목 이상이거나 인데둘의 차이점은 반대방향에 같은 돌이 있느냐 없느냐이다.그래서 나는 현재 위치 기준 반대 방향으로 한 칸만 검사해서 해당 돌이 현재 돌과 같은 색이면 육목 처리를 해주었다. 이렇게 하고도 25%에서 틀렸다고 나왔는데... 문제를..
[Algorithm] 99클럽 코테 스터디 13일차 TIL | 백준_부등호(2529번)
·
Algorithm
https://www.acmicpc.net/problem/2529역대급 오래 걸린 문제🤦‍♀️3년 전에 내가 푼 풀이를 참고하여 겨우 정답을 맞혔다 "">"부호가 올 때는 현재 수보다 무조건 작은 값이 오는 게 핵심이다!! 현재수를 current, 정답을 각 자리 수마다 넣어줄 배열 (arr)의 현재 인덱스를 index로 사용해 줄 것이다. current = 0, index = 1 (부등호 배열과 함께 쓰기 위해 1부터 시작)부터 시작한다.이때, arr [0] = current로 초기화해 준다. 부등호가 "현재 수 보다 큰 1부터 9까지 arr [1]에 들어갈 수 있고재귀로 dfs(1,2) 이렇게 다음 경우의 수를 호출한다.백트래킹을 해서 모든 경우의 수를 찾아야 하므로 재귀 호출 후 방문 배열을 다시..
[Java] 상속
·
Back-end/Java
❗해당 포스팅은 인프런에서 제공해 주는 강의 내용을 개인적으로 정리하였음을 알려드립니다. 김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런김영한 | 실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문www.inflearn.com1. 상속이 필요한 이유다음의 경우를 살펴보자 전기차package extends1.ex1;public class ElectricCar { public void move() { System.out.println("차를 이동합니다."); } public void charge() { System.out.pr..
[Algorithm] 99클럽 코테 스터디 12일차 TIL | 백준_숫자 정사각형(1051번)
·
Algorithm
https://www.acmicpc.net/problem/1051반례를 찾느라 진빠졌던 문제다;완전탐색이라고 생각하고 풀면 어렵지 않다. 왼쪽 위 부터 오른쪽 아래까지 모두 검사하며 정사각형을 구한다.배열로 치면arr[0][0]~arr[N-1][M-1] 까지 만약 세로줄에서 같은 수를 찾았다면 가로줄에서 같은 값이 있는지 찾는다.이렇게 총 4개의 점에 대해 검사를 해야한다.public static int rectangle(int a, int b){ int n = arr[a][b]; int h,w; int area = 0; for(int i = a+1; i arr[i][j] == n 부분을 빼먹고 맞는데 왜 틀리지? 라고 생각했으나역시 컴퓨터는 나보다 정확하다내가 놓친 반례는 아래의 ..
[Algorithm] 99클럽 코테 스터디 11일차 TIL | 백준_체스판 다시 칠하기(1018번)
·
Algorithm
https://www.acmicpc.net/problem/1018문제가 이해 안 됐었는데 그냥 모든 경우의 수가 필요한 문제였다.ㅡㅡ 가로가 13, 세로가 10 이라고 가정하면가로는 0~7, 1~8, 2~9, 3~10, 4~11, 5~12, 6~13세로는 0~7, 1~8, 2~9, 3~10만큼 이동하면서 계산해야한다.for(int i = 0; i  이후 checkBoard 메서드에서 색칠해야하는 개수를 세준다.public static int checkBoard(int x, int y){ String[] boardA = {"WBWBWBWB", "BWBWBWBW"}; int countA = 0; int countB = 0; for(int i = x; i  전체코드import java.u..
[Algorithm] 99클럽 코테 스터디 10일차 TIL | 백준_빙산(2573번)
·
Algorithm
https://www.acmicpc.net/problem/2573정답 안 보고 힌트 안 보고 오롯이 내 힘으로 푼 문제라 더 뿌듯!!☺️ 복잡해 보이지만 차근차근 풀어가면 생각보다 어렵지 않다. 우선 덩어리의 개수를 구하는 함수가 필요하다고 생각해서 dfs 활용하였다.map에서 덩어리(?) 개수 세는 문제는 몇 번 풀었어서 풀이가 금방 나왔다.public static void dfs(int x, int y){ int[] dx = {1, 0, -1, 0}; int[] dy = {0, 1, 0, -1}; visited[x][y] = true; for(int i = 0; i = 0 && dx_x = 0 && dy_y 0){ dfs(dx_x, dy_y); ..
[Algorithm] 99클럽 코테 스터디 9일차 TIL | 백준_이분 그래프(1707번)
·
Algorithm
https://www.acmicpc.net/problem/1707이분 그래프는 정점을 두 그룹으로 나눌 수 있어야 하는데, ArrayList [] 배열을 사용하여 인접 리스트를 생성하고ArrayList[] graph = new ArrayList[V];for(int j = 0; j ();}for(int j = 0; j  colors가 0이면 미방문 정점처음 방문하게 되는 정점을 1로 두고그 정점과 인접한 정점들은 -1로 설정한다. 만약 인접한 정점과 현재 정점이 같다면? 이분 그래프가 아니다!public static boolean bfs(int n, ArrayList[] graph, int[] colors){ Queue queue = new LinkedList(); queue.add(n); ..
[Algorithm] 99클럽 코테 스터디 8일차 TIL | 백준_단지번호붙이기(2667번)
·
Algorithm
https://www.acmicpc.net/problem/2667N x N 크기의 map을 선언하고0또는 1값을 배열에 넣어준다. 단지 내 집의 수를 count 변수로, 총 단지수를 total 변수로 선언하였다. 단지 내 집의 수를 오름차순으로 정렬하여 출력해야하므로 PriorityQueue를 사용하였다. map에서 방문 처리는 map[i][j]=0으로 값을 바꿔주고, map이 0보다 큰 값인 위치의 배열값만 검사하도록 한다! 처음에 3%에서 틀렸습니다가 나왔는데단지 내 처음 집을 찾았을 때 방문 처리를 하지 않았던 것이 원인이었다..!!for(int i = 0; i 0){ count = 1; map[i][j] = 0; //방문처리 total..
[Algorithm] 99클럽 코테 스터디 7일차 TIL | 백준_숨바꼭질(1697번)
·
Algorithm
https://www.acmicpc.net/problem/1697가벼운 문제라고 생각했는데 생각보다 오래걸렸다ㅠㅠ가장 빠른 시간을 찾는 문제이므로 dfs보다 bfs가 적합하다고 생각했다 Node를 queue에 넣어서 풀이했는데, Node 에는 현재 위치와 걸린 시간을 넣어준다.class Node{ int location; int time; public Node(int location, int time){ this.location = location; this.time = time; }} 현재 위치를 기준으로 움직인 값들을 다시 큐에 넣고location+1location-1location*2 int[] arr = new int[3];arr[0] = l+1;ar..
[Algorithm] 99클럽 코테 스터디 6일차 TIL | 백준_DFS와 BFS(1260번)
·
Algorithm
https://www.acmicpc.net/problem/1260dfs와 bfs의 개념만 알고 있다면 풀 수 있는 문제나는 2차원 배열에 입력값을 그대로 담아간선 리스트를 사용하여 그래프를 표현하였다. 문제에 정점이 여러 개인 경우 정점 번호가 작은 것을 먼저 방문한다고 되어있어2차원 배열을 정렬하여 문제를 풀었다.for(int i = 0; i { if(a[0] == b[0]){ return a[1] - b[1]; } return a[0] - b[0];});한 가지 간과하고 있던 문제는입력값이 5 3 11 53 55 2로 들어올 때다. 기존 풀이에서 위와 같이 정렬했을 때 결과는 1 5 2 3이 나와야 되는데 1 5 3 2 가 나왔다for(int i = 0; i map[i..