목록분류 전체보기
Step-by-Step
Java로 코딩 문제를 풀던 도중, 2차원 배열을 복사할 일이 생겼다 정확하게 복사하기 위해 구글에 검색해보던 도중, 배열의 복사에는 두 가지가 있다는 걸 알게 되었다 첫 번째는 배열의 주소값을 복사하는 얕은 복사(shallow copy), 두 번째는 배열의 값 자체를 복사하는 깊은 복사(Deep copy) 얕은 복사(Shallow Copy) - 주소값을 복사하는 방식으로, 복사 후 한쪽에서 값을 변경하면 다른 쪽에서도 변경된다 - 두 배열이 같은 값을 참조하기 때문에 한쪽에서 바꾸면 다른 쪽 배열의 값도 바뀌게 된다 int[] a = {2,3,5}; int[] b = a; System.out.println("b:"+b[0]+","+b[1]+","+b[2]); b[1] = 100; System.out.p..
https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 깊이우선탐색(DFS)과 너비우선탐색(BFS) 중에 하나를 선택해서 풀어야 하는 문제였다 시간 복잡도는 비슷하다고 생각해 조금 더 익숙한 DFS를 선택했고, 코드를 작성하였다 코드 설계는 다음과 같이 하였다 1. 우선 사방 중에 갈 수 있는 곳을 찾은 후, 재귀를 이용하여 계속 탐색한다 2. 더 이상 갈 수 없는 곳이 나오면 해당 함수를 종료(return)하고 다음 방향으로 탐색한다 3. 최종 목적지에 도달하면 전역 변수에 이동한..
ArrayList에 추가를 하면 객체의 값이 저장되는게 아니라 주소 값을 저장하게 된다 예제를 통해 설명하면 import java.util.*; public class Solution{ public static void main(String[] args){ ArrayList arrays = new ArrayList(); ArrayList arr = new ArrayList(); for(int i=0; i
https://programmers.co.kr/learn/courses/30/lessons/42890 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 이틀동안 머리를 굴려 완성한 코드,, 솔직히 인터넷에 검색하면 내가 작성한 코드보다 훨씬 좋은 방법이 많이 있을거 같았는데, 끝까지 해내고싶어서 완성한 코드이다 하하하하 정말 이 코드를 짜면서 배운점이 많다... 그래서 포스팅을 추가로 할 ..
https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 문제에서 나타난 연산자의 수가 3개이기 때문에 경우의 수는 3!=6가지이다. 깊이 우선 탐색(dfs)은 어딜가나 나오기 때문에 항상 복습하는 습관을 길러야겠다!!!!!고 생각한 문제. 코드를 분석하면 다음과 같다. 1. 전역변수 public static char[] prior = {'+','-','*'}; public static ArrayList op = n..
https://programmers.co.kr/learn/courses/30/lessons/72412
https://programmers.co.kr/learn/courses/30/lessons/17686 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 파일명에 따라 파일을 순서대로 정리하는 코드를 작성하는 문제이다 파일명은 크게 세 가지 파트로 나눌 수 있는데, 1. 파일 이름의 문자파트를 나타내는 HEAD (처음 ~ 숫자파트 전까지) 2. 파일 이름의 숫자파트를 나타내는 NUMBER 3. 나머지 부분인 TAIL (숫자파트 이후~끝까지 / 없을 수 있음) 파일 정리는 HEAD > NUMBER > T..
거리두기를 잘 지켜서 앉아있는지 확인하기 위한 코드를 구현하는 문제이다 제한사항을 보면, P는 사람 O는 빈테이블 X는 파티션이다 모든 값은 5X5로 주어지고, 어느 한 곳에서라도 거리두기가 지켜지지 않으면 0이 된다 처음에는 너비우선 탐색만 이용하였는데, 파라미터 전달이 너무 많고 가독성이 떨어져서 효율적인 코드 작성을 하기 위해 인터넷을 참조하여 여러 클래스와 메소드를 이용하였다 사용한 클래스와 메소드 정리 1. isCorrect : 각 배열이 거리두기를 잘 지키고 있는지에 따라 값 리턴 - 0 or 1 2. bfs : 해당 배열의 특정 부분(P값)을 중심으로 조건에 따라 거리두기가 잘 지켜져 있는지 확인 3. Point : bfs에서 사용할 x, y값의 좌표를 담은 클래스 - 검사할 좌표를 담기 위..