본문 바로가기

분류 전체보기

(229)
Set 컬렉션 List 컬렉션은 저장 순서를 유지하지만, Set 컬렉션은 저장 순서를 유지하지 않습니다. 또한 객체를 중복해서 저장할 수 없고, 하나의 null 만 저장할 수 있습니다. Set 컬렉션에는 HashSet, LinkedHashSet, TreeSet 등이 있습니다. 다음은 Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스 메소드 들입니다. 인덱스로 관리하지 않기 때문에 인덱스를 매개값으로 갖는 메소드가 없습니다. 기능 메소드 설명 객체 추가 boolean add(E e) 주어진 객체를 저장, 객체가 성공적으로 저장되면 true를 리턴하고 중복 객체면 false를 리턴 객체 검색 boolean contains(Object o) 주어진 객체가 저장되어 있는지 여부 isEmpty() 컬렉션이 비어 있는지..
List 컬렉션 컬렉션 프레임워크의 주요 인터페이스인 List, Set, Map 에 대해서 정리하겠습니다. 먼저 List 인터페이스를 이용해 구현한 클래스인 ArrayList, LinkedList, Vector 를 정리하겠습니다. List 컬렉션은 객체를 일렬로 늘어놓은 구조를 가지고 있습니다. 객체를 인덱스로 관리하기 때문에 객체를 젖아하면 자동 인덱스가 부여되고 인덱스로 객체를 검색, 삭제 할 수 있는 기능을 제공합니다. 다음은 List 컬렉션에서 공통적으로 사용 가능한 List 인터페이스의 메소드들입니다. 기능 메소드 설명 객체 추가 boolean add(E e) 주어진 객체를 맨 끝에 추가 void add(int index, E element) 주어진 인덱스에 객체를 추가 set(int index, E eleme..
IT 기술 면접 질문 정리 (웹) 1. JAVA JAVA는 네트워크상에서 쓸 수 있도록 미국의 선 마이크로 시스템즈가 개발한 객체 지향 프로그래밍 언어 JAVA의 특징 a. 자바가상머신(JVM)만 설치하면 컴퓨터의 운영체제에 상관없이 작동한다.(즉, 운영체제에 독립적) b. 기본 자료형을 제외한 모든 요소들이 객체로 표현 c. 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어 d. Garbage Collector를 통한 자동적인 메모리 관리 e. 멀티쓰레드(Multi-thread)를 지원 2. OOP(객체지향 프로그래밍) OOP란 Object-Oriented Programming의 약어로써 객체지향 프로그래밍을 의미 데이터를 객체로 취급하여 프로그램에 반영한 것이며, 순차적으로 프로그램이 동작하는 기존의 것들과는 다르게 ..
자주쓰는 Eclipse 단축키 모음 Ctrl + 1 : Quick Fix. 에러가 발생했을 경우 Quick Fix를 통해 쉽게 해결이 가능하다. Ctrl + Space : 자동 완성 기능 Ctrl + L : 특정 줄번호로 가기 Ctrl + Q : 마지막 편집 위치로 이동 Ctrl + O : 현재 편집 화면의 메소드나 필드로 이동하기 Ctrl + D : 한줄삭제 Ctrl + I : 들여쓰기 자동수정 Ctrl + Shift + M : 특정 클래스 Import 시키기 Ctrl + Shift + O : 자동으로 Import 시키기 Ctrl + Shift + F : 코드 자동 정리 Ctrl + Shift + G : 특정 메써드나 필드를 Reference하고 있는 곳을 찾는다. Ctrl + Shift + / : 블럭 주석 설정 Ctrl + Shift..
[17142] 연구소 3 얼마 전에 있었던 삼성SW역량테스트 문제입니다. 연구소 2 (https://daily-life-of-bsh.tistory.com/67) 문제와 브루트포스와 순열을 사용하여 BFS한다는 점은 같습니다. 다른점은 연구소 2 는 선택된 바이러스를 그냥 퍼뜨려서 바이러스가 꽉찬 시간의 최솟값을 구하면 되는 것이지만, 연구소 3 문제는 활성 바이러스가 비활성 바이러스 가 있는 칸으로 가면 비활성 바이러스가 활성 바이러스로 변한다는 점입니다. 그래서 연구소 2 문제는 선택된 바이러스만 2로 하고 나머지 바이러스는 0으로 바꿔서 최솟값을 구했지만, 연구소 3문제는 바이러스 2를 그대로 두면서 선택된 바이러스만 퍼뜨리면서 비활성 바이러스가 있는 자리도 바이러스가 있다고 보고 문제를 풀어야 했습니다. 예를 들어 연구소 ..
[14426] 이모티콘 이모티콘 S개를 만들 때까지 3가지 연산을 계속 하는 것이기 때문에 BFS를 이용해서 풀 수 있는 문제입니다. 저는 처음에 Pair 클래스를 선언해서 화면에 있는 이모티콘 개수, 시간만 생각하고 visited 배열도 1차원으로 선언하여 화면에 있는 이모티콘의 개수만 생각해서 문제를 풀었습니다. 그래서 삭제연산을 하면 시간이 1초 증가하고, 복사 붙여넣기를 하면 시간이 2초 증가하는 방식으로 풀었는데 그렇게 풀게 되면 각 경우에 클립보드에 이모티콘 몇개가 저장되어 있는지 다르기 때문에 틀린 방법이었습니다. 그래서 Pair 클래스도 이모티콘의 개수, 클립보드에 저장되어 있는 이모티콘, 시간 3가지로 나누고, visited배열도 1차원 배열이 아닌 2차원 배열로 visited[이모티콘의개수][클립보드에저장되어..
[17142] 연구소 2 주어진 바이러스의 개수 중에서 M 개를 골라 바이러스를 퍼뜨려야 하기 때문에, 순열의 개념이 필요하고, 모든 연구소에 바이러스가 있게 하는 최소시간을 구해야 하기 때문에 BFS를 이용해서 푸는 문제입니다. 제가 이 문제를 풀 때 고민했던 첫번 째는 x와 y 좌표를 가진 Pair 클래스를 만들어 ArrayList 나 Queue에 넣어 사용하는데, 어떻게 순열로 뽑을까 하는 것이었습니다. 그래서 저는 2의 좌표가 들어있는 ArrayList 말고 따로 ArrayList를 선언해서 2의 좌표가 들어있는 ArrayList 만큼 0, 0의 좌표를 넣어 주었습니다. 그래서 ArrayList의 set 메소드로 2의 좌표를 순열로 뽑았습니다. 그리고 뽑힌 순열에서 BFS를 실시해서 연구소에 바이러스가 퍼지는 시간 min..
[14888] 연산자 끼워넣기 수열 사이사이에 주어진 연산자를 모두 끼워넣어서 계산하여 최댓값과 최솟값을 구하는 브루트 포스 문제입니다. 다른 시뮬레이션이나 DFS, BFS, DP 문제도 풀어야하는데 브루트포스만 풀어서 큰일났습니다........ 이번 문제가 제가 풀었던 다른 브루트 포스 문제와 다른 점은 다른 문제들은 조합을 이용하여 완전 탐색을 진행했는데, 이번엔 순열을 이용하는 점이 달랐습니다. 브루트 포스 문제는 많이 나오는데 조합과 순열, 재귀에 대해 완벽한 이해가 중요하다고 생각했습니다. 그래서 재귀로 순열을 출력하는 방법을 먼저 공부하고 문제를 해결했습니다. 더 간단하게 풀 수도 있을 것 같은데, 풀다보니 코드가 엄청 조잡한것 같습니다.....ㅋ 정답을 보고풀면 깔끔해지는데 정답을 안보고 푸니까 코드가 지저분해지는것 같습..