어....꽤나 어려운 문제가 걸린 거 같다. 첫 인상은 어제 풀었던 Heap LV3보다 더 생각할 것이 많아 보였다. 처음에는 하나하나 붙여서 따로 배열을 생성한 뒤 내림차순으로 정렬하여 String변환 후 내보내는 코드를 짜려고 했는데... 이게 테스트케이스 2번 같은 경우만 해도, 나올 수 있는 경우의 수가 5 x 4 x 3 x 2 x 1 = 120 이 나오는 미친 효율성을 보여줄게 뻔해서...포기했다. 다시 처음으로 돌아와서 애초부터 String Array로 변환을 시킨 후에 내림차순 정렬을 하는 방법을 생각해봤지만, 문자열은 첫번째 자리가 큰 순서, 문자열이 긴 순서로 정렬이 되기 때문에 테케 2번에 9534303이 나와버린다...하하... 한참을 고민하다가, Sort의 기준을 두 인자를 합친 값..
어제 Socket을 사용한 간단한 서버 - 클라이언트 간 채팅 프로그램을 구현해봤다. 이번엔 단순한 채팅이 아닌, 문제 은행을 저장해놓고 문제에 해당하는 정답을 클라이언트로부터 받아 서버에 저장 후, 정답 여부를 판단하여 다시 클라이언트에 보내주는 양방향 문제 풀이 프로그램을 구현해봤다. 원리는 간단하다. 데이터를 좇아가기가 조금 복잡해졌을 뿐... 우선, 입력받은 답안에 따라 상태를 바꿔가며 문제를 출제해 줄 프로토콜을 구성해야 한다. 즉, 문제 배열과 정답 배열을 가지고 있다가, 서버에서 입력받은 답안이 정답과 같은 지 확인한 그 결과에 따른 출력을 내보내게끔 구성해야 한다. ○QuizProtocol.java package com.choonham; public class QuizProtocol { /..
어제부터 Sort를 이용하는 Programmers 연습 문제를 풀기 시작했는데, 어제 푼 문제가 LV1이여서 그런건지, 아니면 내가 java에 내장되어있는 sort()를 사용해서 그런건지 모르겠는데 역대급 낮은 점수인 2점을 받았다... 그렇게 심각한 문제는 아니지만, 혹시 sort 알고리즘을 내부에서 직접 구현을 안해서 그런거라면..? 하는 생각이 들어서 더 높은 LV의 sort문제를 풀기 전에 한번 정리를 하고 넘어가려고 한다. (Heap Sort는 이전 포스팅에서 한번 다뤘으니 따로 다루지는 않겠다.) 1. Bubble Sort 인접한 두 인자가 정해진 순서를 따르고 있지 않다면, 두 인자의 위치를 바꾸며 정렬을 진행하는 정렬 방법이다. 즉, 4 2 1 5 3 2 4 1 5 3 2 1 4 5 3 2..
1. Socket: 네트워크에 연결된 컴퓨터 간에 데이터를 주고 받을 때 사용하는 도구. 하드웨어적인 의미로 소켓이라는 용어를 사용하기도 하지만 여기서는 소프트웨어적인 개발 도구를 뜻한다. 자바에서는 TCP 소켓 통신을 위해 Socket Class와 ServerSocket Class를, UDP 통신을 위해서는 DatagramPacket Class와 DatagramSocket Class를 제공한다. 1) Socket의 연결과 전송 과정: 2) Socket Constructual: Socket(InetAddress address, int port) 주어진 IP address와 포트를 가지고 소켓 생성 Socket(String host, int port) 주어진 host와 포트를 가지고 소켓 생성 - Sock..
URL Class를 살펴보기 전에 우선 URL의 구성 성분들에 대하여 훑어보고 넘어가려고 한다. URL의 형식: 프로토콜:// 인터넷 주소[:포트번호] [/디렉토리] [/파일 이름][? 쿼리 스트링] , [] = 생략 가능 https://til-choonham.tistory.com:portNum/log/index.html?id=choonham - 프로토콜 : 저 원에 접근하기 위해 서버와 통신에 사용되는 통신규약 - 인터넷주소 : 자원을 제공하는 서버의 주소(이름) - 포트번호 : 통신에 사용되는 서버의 포트번호 - 디렉토리, 파일 이름 : 자원이 저장되어 있는 서버상의 위치 - 쿼리스트링 : ‘?’ 문자 뒤에 오는 통신에서 사용되는 매개변수 이런 기본적인 개념부터 제대로 짚고 넘어가야 클래스를 생성하고..
InetAddress Class: 인터넷 주소(IP)에 관한 정보를 다루는 클래스, 생성자가 따로 없으며 InetAddress클래스의 정적 메소드에서 정보를 받아오는 형식으로 사용한다. 특이하게도 기본 생성자의 접근 제한자 default이기 때문에 new 연산자 객체를 생성할 수 없다. 따라서 InetAddress 클래스는 객체를 생성해 줄 수 있는 5개의 static 메서드를 제공하고 있다. InetAddress 클래스의 주요 메서드: byte[] getAddress() IP주소를 byte배열로 반환 static InetAddress[] getAllByName(String host) 도메인명(host)에 지정된 모든 호스트의 IP주소를 배열로 반환 static InetAddress getByAddres..
제한사항 array의 길이는 1 이상 100 이하입니다. array의 각 원소는 1 이상 100 이하입니다. commands의 길이는 1 이상 50 이하입니다. commands의 각 원소는 길이가 3입니다. 중요한 건 Commands에 "모든" 배열에 대하여 각각 연산을 하고, 리턴 값을 받아야 한다는 것. 이 점만 주의하면, 딱히 신경쓸 건 없어보이는 쉬운 문제이다. 배열과 i, j를 받아 우선 받은 배열을 자르는 cutter 메서드를 추가하고, commands의 개수만큼 cuuter로 자른 결과 배열을 정렬, 그 후 찾는 위치에 있는 값을 출력하도록 작성했다. package com.choonham; import java.util.ArrayList; import java.util.Arrays; impo..
명령어 데이터를 받아서 이를 따로 읽어들여 연산을 처리하는 이중 Priority Queue를 구성하면 되는 문제인 것 같다. 이런 LV3 문제들은 제한 사항을 똑바로 숙지하지 않아서 삽질을 하는 경우가 꽤 있었으므로, 제한 사항을 따로 적어 확실하게 하고 넘어가는 것이 좋겠다는 생각이 든다...ㅎㅎ 어제 데어봐서.. 제한 사항: operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합니다. 빈 큐에 데이터를 삭제하라는 연산이 주어질 경우, 해당 연산은 무시합니다. 첫 시도는 오름차순과 내림차..
이전에 포스팅한 join() 메서드에서도 언급했듯, Thread는 Main 메서드의 순서와는 별개로 실행된다는 것이 장점이자 단점이다. 즉, 실행 속도에 따라 원치 않는 결과를 얻을 수도 있는 것이다. 간단한 예시로 한 은행 계좌에 두 명의 사람이 각각 입금과 출금을 한다고 가정하고 코드를 짜 보자. ○Bank.java package com.choonham; public class Bank { private int money = 10000; //현재 잔액 초기 값 public Bank() { // TODO Auto-generated constructor stub } /* 입금 처리 메서드 */ public void MoneyIn(int save) { int m = this.money; try { Thre..
또, 예시가 1개뿐인 문제를 만났다. 상당히 복잡해 보이는 문제지만, 대기 시간이 0인 작업을 먼저 처리해주고 그다음에 작업 시간이 짧은 작업 순으로 처리하여 평균 시간을 구하면 풀릴 줄 알았다... package com.choonham; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; class Solution { public int solution(int[][] jobs) { int disk = 0; int sum = 0; int answer = 0; List tempArray = new ArrayList(); PriorityQueue pq = new..
- AsyncStorage
- javascript
- redux
- 정보보안기사 #실기 #정리
- await
- Promise
- redux-thunk
- react
- 이탈리안 레스토랑
- 인천 구월동 이탈리안 맛집
- react-native
- 파니노구스토
- 맛집
- 인천 구월동 맛집
- Async
- Total
- Today
- Yesterday