dev. (140) 썸네일형 리스트형 [코딩테스트 챌린지] 백준 1568 덩치 (java) 문제문제 탐색하기1. 문제의 조건에 맞게 코드 구현하기N명의 키와 몸무게를 입력받아 덩치의 순위를 매기는 프로그램을 구현하는 문제입니다.몸무게와 키가 모두 크지 않으면 덩치가 크다고 할 수 없다는 조건을 생각해보면 입력받은 사람의 덩치 등수를 매길 수 있습니다. loop를 돌기전에 덩치 순위 변수를 1로 선언합니다.현재 지정된 사람의 몸무게와 키가 비교하는 사람보다 모두 작을때만 순위를 +1 하게되므로 서로 비교했을 때 덩치의 순위를 매길 수 없는 사람들을 동일한 등수로 유지시킬 수 있습니다. 코드 설계하기덩치 등수를 비교할 사람의 수 입력2차원 배열 입력순위를 지정할 rank 변수를 1로 선언다음 배열의 값 보다 현재 배열의 값이 모두 작을 때 순위 변수의 값을 +1 한다ㅣ.출력한 뒤 rank 변수를.. [코딩테스트 챌린지] 백준 2947 나무조각 (java) 문제 문제 탐색하기1. 정렬 알고리즘 구현하기문제를 확인해보면 나무 조각 뒤에 쓰인 1 부터 5까지의 수를 오름차순으로 정렬하는 프로그램을 구현하는 문제입니다.인접한 2개의 숫자를 비교하여 정렬하는 조건을 통해 Bubble Sort (버블정렬) 알고리즘을 구현하라는 문제인 것으로 보입니다. 버블 정렬이란?두 개의 인접한 원소를 비교하여 정렬하는 알고리즘 방식 입니다. 데이터를 비교하면서 정렬하는 과정, 정확하게는 데이터를 교환하는 과정(swap)에서 임시 변수를 필요로 하나, 이는 충분히 무시할 만큼 적은 양이기 때문에 제자리 정렬이라고 부르기도 합니다.시간 복잡도는 O(n^2)로 효율적인 정렬방식은 아니지만 주어진 원소가 5이므로 이 문제에서는 충분히 사용할 수 있는 정렬 방식이라고 생각합니다. 버블.. [코딩테스트 챌린지] 백준 25305 커트라인 (java) 문제 문제 탐색하기1. 주어진 점수 배열 정렬하기N명의 학생중 k명의 학생들이 상을 받을 수 있는데 여기서 상을 받는 커트라인을 구하는 문제입니다.즉, N명의 학생 중 k번째로 점수가 높은 학생의 점수를 출력하면 되는 문제입니다.주어지는 점수를 배열로 저장한 뒤에 오름차순 혹은 내림차순으로 정렬한 뒤 원하는 인덱스로 뽑으면 되는 간단한 문제입니다. Arrays sort()를 활용하면 참조형 배열일 경우에는 최악의 경우에도 시간복잡도는 O(nlog(n)) 입니다.주어진 배열을 참조형 배열인 Integer 배열로 저장해서 정렬하고 N의 최대값은 1000이므로 충분히 시간내에 답을 낼 수 있는 문제입니다. 여기서 딱 커트라인에 걸리는 사람의 점수를 출력하기 위해서는 배열을 내림차순으로 정렬해서 K-1 번째 .. [코딩테스트 챌린지] 백준 5635 생일 (java) 문제 문제 탐색하기1. input 값 가공하기입력받는 n개의 줄은 "이름 dd mm yyyy" 형태로 들어옵니다. 여기서 input 값을 yyyymmdd 형태로 세팅하게되면 나이를 비교하기가 훨씬 편할 것입니다.input 값의 연도, 월, 일의 범위는 다음과 같습니다. (1990 ≤ yyyy ≤ 2010, 1 ≤ mm ≤ 12, 1 ≤ dd ≤ 31)따라서 생년은 4자리이고 월과 일은 1자리로 들어올 수 있습니다. 월과 일이 1자리일 경우 앞에 0을 붙이는 작업을 해서 생년월일을 8자리로 세팅합니다. 2. 생년월일 비교하기가장 나이가 적은 사람의 이름과 가장 나이가 많은 사람의 이름을 출력하기 위해서는 입력받은 생년월일을 비교하여야 합니다.여기서 주의할 점은 숫자가 클수록 나이가 많은 것이 아니라는 점.. [코딩테스트 챌린지] 백준 1181 단어 정렬 (java) 문제 문제 탐색하기1. 정렬 조건 확인하기문제를 잘 읽어보면 조건이 3가지임을 알 수 있었습니다. 중복된 단어 제거단어의 길이 오름차순단어의 길이가 같을 경우 사전 순 정렬중복된 단어가 input 값으로 주어지면 제거 해줘야 한다는 것과 단어의 길이 및 단어로 정렬하는 다중 정렬 조건이 있다는 것을 알 수 있습니다. 2. HashSet으로 중복된 단어 제거하기List로 입력을 받게되면 중복값을 없애기 위해 순회하는 로직이 들어가야하고 map을 사용하게 되면 불필요하게 value값을 세팅해줘야하는 것은 아닌지 고민이 되었습니다.중복된 값을 제거해주는 Collection은 Set 입니다. 따라서 input 값을 저장할때 HashSet을 활용하면 전체 input 값 중에 중복된 단어가 제거되어 첫번째 정렬 조.. [코딩테스트 챌린지] 백준 10814 나이순 정렬 (java) 문제 문제 탐색하기 1. 정렬 조건 확인하기input 값은 최대 10만이고 나이와 이름이 가입한 순서대로 주어진다고 합니다. 나이는 오름차순으로 정렬하고 나이가 같을 경우 가입한 시기를 오름차순으로 정렬해야하는 조건이 주어졌습니다. java 의 대표적인 정렬 클래스인 Arrays.sort()를 사용하면 시간복잡도가 평균적으로는 O(nlog(n)) 이지만 최악의 경우 O(n^2)의 시간복잡도를 가진다 합니다. 또다른 정렬클래스인 Collections.sort() 를 사용하면 시간복잡도는 O(nlog(n))이고 정렬조건을 custom 할 수 있는 이점이 있습니다. 따라서 Collections를 활용하여 데이터를 정렬시킬 것 입니다. 2. 입력값을 저장하는 객체 생성input 값은 나이와 이름이 공백을 사이에.. [코딩테스트 챌린지] 백준 2309 일곱 난쟁이 (java) 문제 문제 탐색하기1. 일곱 난쟁이 키의 합은 100문제를 확인해보면 9명의 난쟁이의 키를 input 값으로 받는 것을 알 수 있습니다. input 값이 많지 않으므로 정답을 도출하는 데에 전체 탐색을 해도 괜찮을 것 같다는 생각을 했습니다.9명의 난쟁이 중 7명의 난쟁이 키의 합이 100일때의 난쟁이들의 키를 배열로 출력하면 되는데,9명의 난쟁이에서 백설공주의 난쟁이가 아닌 2명을 제외시키는 것이 더 수월할 것으로 판단되었습니다. 2. 9명의 난쟁이 키의 합 구하기7명의 난쟁이의 키를 구하기 위해서는 9명의 난쟁이 키의 합에서 2명의 난쟁이를 제외시켜 100이 나오는 경우를 구해야합니다. 즉 9명의 난쟁이 키의 합이 필요합니다. 따라서 값을 처음 입력받을 때 9명의 난쟁이 키 총합을 구하면 편리할 것으.. [TIL] 랜덤 시크릿 키 생성 (openssl rand) 미니프로젝트를 진행하다가 JWT Secret Key를 사용해야하는 경우가 생겼습니다.간단하게 JWT Secret Key 에 대해서 제가 알아본 바를 정리하고 Secret Key를 생성할 수 있는 openssl 명령어를 소개하도록 하겠습니다. JWT Secret Key JWT (JSON Web Token) 에서 Secret Key를 사용하는 이유는 보안성을 확보하기 위해서입니다. JWT는 서버와 클라이언트 간에 정보를 안전하게 전달하기 위한 토큰 기반 인증 메커니즘으로, Secret Key는 JWT의 서명을 생성하고 검증하는 데 사용됩니다. Random Key JWT Secret Key 로 사용하기 위해 랜덤 키를 프로젝트에 세팅해줘야 하는데 안전한 비밀키를 생성하고 관리하기 위해서는 충분한 길이와 복잡성.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 18 다음