쉽게 인티저로 바꾸고 이진수로 바꾸는 방법을 사용해도 됬을 것 같으나 데이터 크기가 큰 경우에 더 안정적으로 작동하는 코드로 작성했다. class Solution { public String solution(String bin1, String bin2) { StringBuilder sb = new StringBuilder(); int num = 0; while(bin1.length() = 0; i--){ int bit = (bin1.charAt(i) - '0') + (bi..
import java.util.*; class Solution { public String solution(String[] id_pw, String[][] db) { for (String[] row : db) { if (Arrays.equals(row, id_pw)) { return "login"; } } for (String[] row : db) { if (row[0].equals(id_pw[0])) { return "wrong pw"; } } return "fail"; } } Arrays.equals 에 대해서 잘 몰라서 이번에 공부하게 되는 좋은 기회였다.
import java.util.*; class Solution { public int[] solution(int[][] score) { int[] answer = new int[score.length]; List list = new ArrayList(); //학생의 점수 평균을 리스트에 추가하기 for(int i = 0; i < score.length; i++){ list.add((score[i][0] + score[i][1]) / 2.0); } //점수 평균을 내림차순으로 정렬한 새로운 리스트 만들기 List sortedlist = new ArrayList(list); Collections.sort(sortedlist, Collections.reverseOrder()); //순위를 저장할 맵 Map r..
이문제를 봤을때 numlist 배열의 각 원소값과 n과의 길이에 대해 저장하는게 필요할거라 생각했다. 그래서 생각한건 HashMap을 사용해 키값에는 numlist 의 값 그리고 value 값에는 n의 거리에 대힌 값으로 설정했다. 그리고 음수가 나올걸 대비해 abs 를 써서 절대값으로 처리를 해줬다. 그리고 hashmap의 value값에 대해서 정렬을 해줘야되는데 값이 작은게 먼저 갈 수 있도록 정리해줘야됬고 만약 value값이 갔다면 key 값이 큰게 들어갈 수 있도록 정렬해줘야 됬다. comparator에 익숙하지 않아서 인터넷의 힘을 빌려서 쓸 수밖에없었다 좀더 공부가 필요할 것 같다. 그리고 그다음은 정렬된 list에서 answer 배열에다가 list의 key 값만 가져오면 끝! import j..
class Solution { public int solution(int a, int b) { int gcd = gcd(a, b); a /= gcd; b /= gcd; while(b%2 == 0){ b /= 2; } while(b % 5 == 0){ b /= 5; } return b == 1 ? 1 : 2; } public static int gcd(int a, int b) { if ( b == 0){ return a; } return gcd(b, a % b); } } 최대공약수를 구하는 코드를 알고있으면 쉽게 풀 수 있는 문제였다.
import java.util.*; class Solution { public int solution(int[][] lines) { int answer = 0; Map hm = new HashMap(); for(int i = 0 ; i = 2){ answer++; } } return answer; } } 배열에 있는 세 개의 선분에 대해서 시작점과 끝점 가져옴 각 선분에 대해 선..
package Programmers; import java.util.*; public class ProgrammingBasic { public static void main(String[] args){ int[][] dots = {{1, 4}, {9, 2}, {3, 8}, {11, 6}}; System.out.println(solution(dots)); } public static int solution(int[][] dots) { //평행인걸 확인하는 방법은 점과 점 사이의 길이가 같은지 확인하는 것 //8 , 2 / 8 / 2 //2개씩 짝짓는 방법은 // 1,2 / 3,4 1,3/2,4 1,4/2,3 float[] lengths = new float[6]; int index = 0; for(int ..