자바
-
공원 산책알고리즘/프로그래머스 2023. 5. 11. 10:38
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/172928 해설 이차원 배열로 공원 맵을 만들면 편하게 작업할 수 있다. 공원의 길이가 가로, 세로 각각 50이기 때문에 O(N^2)의 시간복잡도를 가져도 괜찮다. 코드 class Solution { public int[] solution(String[] park, String[] routes) { int[] startPoint = new int[2]; int height = park.length; int width = park[0].length(); char[][] parkMap = new char[park.length][park[0].length()]; for (int i = 0; i ..
-
[Java] 달리기 경주알고리즘/프로그래머스 2023. 5. 3. 12:04
문제 링크 callings의 길이가 최대 1,000,000개이므로 이중 반복문을 사용해서 시간 복잡도가 O(N^2)이 나오도록 작업하면 시간 초과가 뜹니다. class Solution { public String[] solution(String[] players, String[] callings) { for (int i = 0; i < callings.length; ++i) { for (int j = 0; j < players.length; ++j) { if (callings[i].equals(players[j])) { String temp = players[j - 1]; players[j - 1] = players[j]; players[j] = temp; break; } } } return player..
-
[Libraray] RXTX for Java개발/Web 2020. 8. 28. 10:09
실행환경 윈도우10 64bit pro, 인텔리제이 Maven Repository에 올라와있는 것은 32bit용 라이브러리고 대부분 이클립스로 설정합니다. 저는 인텔리제이를 쓰기로 했기 때문에 64비트 라이브러리를 따로 찾아야했고 외부 라이브러리를 추가하는 방법이 이클립스랑 많이 달라서 애를 조금 먹었습니다. fizzed에 들어가서 Windows-x64 버전을 다운로드합니다. 인텔리제이에서 다운받은 라이브러리를 넣어봅시다. 스프링 프로젝트이기 때문에 gradle을 사용해야 합니다. 프로젝트로 가서 lib 폴더를 하나 만들고 다운받은 RXTXcomm.jar을 넣어줍니다. build.gradle에서 dependencies에 다음과 같은 코드를 추가합니다. Ctrl + Shift + O를 눌러 변경사항을 반영합..
-
Dynamic Web Project를 Import한 후 생긴 오류들개발/자바 2020. 4. 25. 21:47
외부에서 작성한 프로젝트를 File System으로 Export한 후 집에서 Import를 하고 나니 프로젝트가 오류 투성이다. Export한 프로젝트의 jdk 버전이 1.8이고 집에서도 이클립스는 1.8에 맞췄는데 jsp 파일에서 java 코드 오류가 일어났다. 자바를 못 읽는 건 이 프로젝트가 jre 정보를 불러오지 못하다는 것. 아니나 다를까 Libraries에 자바가 없다. Build Path에 가보니까 뭔가 이상하다. jdk 버전이 13일 때 나오는 Module Dependencies 탭이 보이고 심지어 jre system library는 unbound가 되었네. 뭐지. 13버전을 지우고 1.8 버전을 넣었지만 프로젝트 이름 옆에 빨간 x 표시는 사라지지 않고 역시 톰캣 서버도 켜지지 않는다. ..
-
추상 클래스는 무엇개발/자바 2020. 3. 19. 19:20
일반적으로 말하는 추상의 의미는 '구체'와 대응된다. 구체적이지 않은 것은 추상적이다. 회화에서의 추상화는 눈에 보이는 사물을 재현하지 않고 눈에 보이지 않는 현실을 순수한 점, 선, 면, 색채 등으로 표현한 그림이다. 컴퓨터 과학에서 말하는 '추상'은 이 느낌과 결이 다르다. 위키백과에 나오는 정의에 따르면 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려내는 것을 말한다. 객체 지향 프로그래밍은 기본적으로 현실 세계에 가까운 모습으로 프로그램을 구현하는 것이 목표다. 객체 지향 프로그래밍 패러다임은 컴퓨터 프로그램을 단순한 명령어의 집합으로 보지 않고 객체들의 집합으로 파악하고자 하는 것이며 이 '객체'는 결국 전체를 이루는 요소를 말한다. 현실의 어떤 점을 프로그래밍..
-
참조변수에 대한 작은 오해개발/자바 2020. 3. 16. 14:33
자바에서 기본 자료형 변수를 만들 때를 제외하고, 객체는 전부 new 연산자를 이용해 동적으로 메모리를 할당한다. new 연산자가 반환하는 것은 내부적으로는 메모리의 주소겠지만 자바에서 개발자는 메모리 주소를 알 수 없고 해싱을 거친 참조값(해시코드)만 확인할 수 있다. 애초에 자바에서는 메모리를 직접 다룰 일이 없다. 참조값은 메모리 주소 정보를 갖고 있기 때문에 C/C++의 포인터와 같다고 봐도 된다. 객체를 매개변수로 넘길 때 해당 객체의 참조값이 전달되므로 함수 내에서 객체의 데이터를 변경하면 외부에서도 바뀐 결과를 확인할 수 있다. 다음의 결과는 Lee가 출력된다. changeName()의 매개변수 student는 지역변수이지만 main()에서 생성한 Student 객체의 참조값을 가지고 있으며..
-
배열 탐색도 연산이다개발/자바 2020. 3. 11. 14:38
public class Test { public static void main(String[] args) { Exam[] exam = new Exam[10]; for (int i = 0; i < 10; ++i) { exam[i]= new Exam(); exam[i].kor = 100; exam[i].eng = 100; exam[i].math = 100; } } } 위 코드는 매번 인덱스 연산을 한다. 객체를 생성할 때도 하고 필드에 접근할 때도 한다. 인덱스 연산도 연산이다. 불필요한 연산은 최소화하는 게 좋다. 열 번이라고 대수롭지 않게 생각하면 안 된다. 한 번이든 열 번이든 백 번이든 만 번이든 불필요한 건 불필요한 것이다. 위의 코드는 다음과 같이 바꾸는 것이 좋다. 참조값 복사는 부담을 느끼지 ..
-
[프로그래머스] 2016년알고리즘/프로그래머스 2020. 2. 11. 15:06
문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예 a b result 5 24 "TUE" 문제 링크:https://programmers.co.kr/learn/courses/30/lessons/12901 쉽습니다. 문제에..