목록분류 전체보기 (131)
자바칩
난이도: Gold 4문제: https://www.acmicpc.net/problem/3190 머리를 늘리고 꼬리를 자르면 되는 문제이다.일단 뱀과 사과 정보를 저장할 2차원 배열을 만들자. 2차원 배열을 만들고 뱀의 몸이 있는 칸을 1, 사과가 있는 칸을 2로 설정해놓았다.뱀이 사과가 있는 칸에 도달하면 2가 있던 칸이 1로 바뀌고 점점 1의 개수가 늘어나게 된다.그리고, 이 게임이 몇 초 경과하고 끝이 나는지 계산할 second 변수를 만들었다. 사과가 없으면 1은 계속 그냥 이동하고, 사과가 있으면 2가 있던 칸을 1로 만들고 이동하면 된다.이렇게 하면 1이 점점 많아지게 된다.이 경우에는 9번 움직인 뒤 벽에 부딫쳐서 게임이 끝나므로 9초 뒤에 끝이 나게된다. 이 문제는 맨 앞에 요소를 추가..
난이도: Gold 5문제: https://www.acmicpc.net/problem/14503 다음과 같이 문제에 주어진 대로 그대로 구현하면 풀 수 있는 문제이다. 하지만 1번으로 돌아가라는데 1번이 3개다... 어느 1번으로 돌아가라는 건지 모르겠다.이것 때문에 푸는데 시간이 좀 걸렸다.질문 게시판에 좀 더 정확하게 작성되어있는 다른 사람이 올린 글을 찾아 보았다. 아.. 1번은 완전 맨 처음에 있는 1번이구나.... 잘못 풀고 있었네!! 하고 깨달아서 고쳤더니 바로 되었다.누가 이 글을 보고 암이 나았다 했는데 정말이다. 이 글을 보고 암이 나았다. 왜 안되나 했네.. 동서남북에 따라 가야할 방향은 다음과 같이 다르게 지정해주어야 한다.이렇게 그림을 그려놓으니까 코드를 더 편하게 작성할 수 있었..
정리해 봅시다 1. 제네릭이 자바에 추가된 이유는 무엇인가요?타입 형 변환에서 발생할 수 있는 문제점을 "사전"에 제거하기 위해 추가되었다. 여기서 "사전"이라고 하는 것은 실행 시에 예외가 발생하는 것을 처리하는 것이 아니라, 컴파일할 때 점검할 수 있도록 한 것을 말한다. 2. 제네릭 타입의 이름은 T나 E처럼 하나의 캐릭터로 선언되어야 하나요?제네릭 타입의 이름은 어떤 것으로 선언하든 상관이 없다. 하지만 다른 어떤 사람이 보더라도 쉽게 이해할 수 있도록 하려면 자바에서 정의한 기본 규칙을 따르는 것이 좋다. 자바에서 정의한 기본 규칙은 다음과 같다.* 자바에서 정의한 기본 규칙E: 요소(Element, 자바 컬렉션에서 주로 사용됨)K: 키N: 숫자T: 타입V: 값S, U, V: 두 번째, 세 번..
정리해 봅시다 1. 자바 패키지 중 같은 패키지에 있는 클래스를 제외하고, 별도로 import 하지 않아도 되는 패키지는 무엇인가요?java.lang 패키지 2. 자바의 메모리가 부족해서 발생하는 에러는 무엇인가요?OutOfMemoryError (OOME) 3. 메소드 호출 관계가 너무 많아서 발생하는 에러는 무엇인가요?StackOverflowError 4. java.lang 패키지에 선언되어 있는 3개의 어노테이션에는 어떤 것들이 있고, 각각의 역할은 무엇인가요?어노테이션역할@Override부모 메소드를 Overriding 하는 것을 명시적으로 선언한다.이 어노테이션을 선언하면 Overridng을 하기 위한 부모 메소드의 시그니처와 다르게 메소드를 선언했을 때 컴파일 에러를 발생시킨다.@Depre..
난이도: Gold 5문제: https://www.acmicpc.net/problem/15686 N의 크기는 50으로 작다.하지만 N의 크기가 작다고 이중 for문을 돌려버리면 시간 초과가 떠버린다.이중 for문은 시간복잡도가 O(n^2)이니까 50 * 50 = 2500이면 충분하지 않은가? 라고 생각할 수도 있지만 절대 그렇지 않다. 이중 for문을 사용하면 시간 복잡도는 생각보다 어마어마하다.M의 개수는 최대 13개. 즉, dfs로 13번 파고들면 이중 for문을 13번이나 돌려야 한다.즉, for (1~50) for (1~50) for (1~50) for (1~50) for (1~50) ..
요약 문제 1. 참조 자료형(Reference type)과 기본 자료형(Primitive type)의 차이를 정리해 주세요.참조 자료형(Reference type)기본 자료형(Primitive type)- 기본 자료형 외의 모든 타입은 참조 자료형 - 개발자가 클래스로 직접 생성 가능- String 클래스만 + 연산 사용 가능하고, 나머지는 모두 불가능- Pass by Reference: 매개변수로 전달할 때 참조 객체(주소값)를 전달하기 때문에 값 변경 가능- byte, short, int, long, float, double, char, boolean 타입 - 이 외에는 개발자가 직접 생성 불가능- 모든 사칙 연산(+, -, *, /, % 등) 가능- Pass by Value: 매개변수로 전달할때 값..
난이도: Gold 4문제: https://www.acmicpc.net/problem/14502 세로: N, 가로: M인 N * M 행렬이 있다. 3개의 벽(1)을 임시로 둔다. 바이러스(2)가 벽(1)을 제외하고 상하좌우로 퍼진다. 바이러스가 퍼지지 않은 구역은 남은 0의 개수를 세어 보면 된다.총 27개가 나온다. 바이러스가 최소한으로만 퍼지게, 즉 안전 영역의 개수가 최대한 많게 3개의 벽을 세워야 한다. N, M의 최대 개수가 8인 것을 보면 시간 복잡도에 전혀 영향을 끼치지 않는다.벽을 3번 세우려면 최소 6중 for문을 돌려야 할 것 같은데,8 * 8 * 8 * 8 * 8 * 8 = 262,144인 것을 보면 정말 시간 복잡도를 신경 쓰지 않아도 된다. 3개의 벽을 세우기 위해서는 브루..
1. @Override 어노테이션의 용도는 무엇인가요?부모 클래스에서 선언된 메소드의 이름과 매개변수가 같은 메소드를 자식 클래스에 선언하는 것을 Overriding이라고 한다. 만약 자식 클래스에 선언된 메소드가 여러 개일 경우, 어떤 메소드가 Overriding된 메소드인지 찾기 어려울 수도 있기 때문에, 명시적으로 어노테이션을 선언해서 Overridng된 메소드를 쉽게 찾기 위한 용도이다. 또한, 자식 클래스에서 Overriding한 메소드를 선언할 때 혹시 잘못 코딩했을 수도 있으니 컴파일러한테 확인해 달라고 요청하는 용도이다.*사용 예시@Overridepublic void overridingMethod() {} 2. @SuppressWarnings 어노테이션의 용도는 무엇인가요?컴파일할 때 경..