개발지 (80) 썸네일형 리스트형 [1122] 자바 - 자료구조 (Tree) # Tree - Tree의 정의 ▪ 데이터가 바로 아래에 있는 하나 이상의 데이터에 무방향으로 연결된 계층적 자료 구조 - Tree의 구조, 특징 ▪ 맨 처음 데이터의 꼭짓점을 루트(Root)라고 한다. ▪ 루트에 여러 개의 데이터를 간선(edge)로 연결하며, 연결된 각 데이터를 노드(Node)라고 한다. ▪ 상하 계층으로 연결된 데이터들은 부모/자식 관계를 가진다. ▪ 상위 계층의 데이터를 부모 노드(Parent Node), 하위 계층에 있는 데이터들을 자식 노드(Child Node)라고 한다. ▪ 자식이 없는 노드를 리프 노드(Leaf Node)라고 한다. 깊이 (Depth) 트리 구조에서 루트(꼭짓점 노드)로부터 하위 계층의 특정 노드까지의 깊이. 레벨 (Level) 같은 깊이를 가지고 있는 노드.. [프로그래머스] 코테연습 - 주식 가격 (lv.2) - 내 방법 풀이 어제에 이어 공부한 스택/큐 문제를 풀었으나, 평이한 난이도의 문제였고 굳이 스택/큐를 쓰지 않아도 되는 문제였다. 특이하게 주식의 값을 가지고 그 값이 몇초동안 떨어지지 않았는지를 각 가격별로 구하여 리턴하는 문제였다. 해당 주식의 값을 설정한 뒤 그 뒤의 가격들과 비교하면서 시간을 상승시키다가 떨어지면 반복문을 종료하는 식으로 코드를 구성했다. class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; for (int i = 0; i < prices.length; i++) { int price = prices[i]; for (int j = i+1; j < prices.leng.. [프로그래머스] 코테연습 - [PCCP 기출문제] 1번(lv.1) - 내 방법 풀이 게임에 익숙해서, 프로세스를 이해하기 쉬웠던 문제였다. 조건을 3개로 나눠, 순서대로 최대체력, 공격 유무, 추가 회복 유무에 대해서 생각했다. 이후 제한 조건을 하나씩 확인하며 추가해 나갔다. 잘하는 사람일수록 선언할 변수를 줄이는 방법으로 코드를 짤 것 같다. 내 코드는 내가 이해하기는 쉬웠지만 다른 사람의 평가는 어떨지 궁금한데, 일단 시간의 흐름에 따라 체력의 변화와 공격의 유무를 적용시키는 코드를 짰다. 마지막 공격 이후에 체력을 리턴하면 됨으로, while 문으로 시작했다. 만약 게임에 익숙하지 않았다면 생각보다 중간에 빼먹는 계산이 생길수 밖에 없었을 거 같다. class Solution { public int solution(int[] bandage, int health,.. [프로그래머스] 코테연습 - 프로세스(lv.2) - 내 방법 풀이 문제 유형을 보고 Queue를 활용하여 풀 생각을 했다. 또한 Queue의 대표적 활용 예시이기 때문에 Queue를 선언했고, 중요도와 제한조건을 생각해서 max를 구할 생각을 했다. 처음에 예시를 보고 priorities에 작업마다 우선순위(숫자 1~9)와 이름(A~Z)가 배열로 제공된 줄 알고 HashMap로 풀어야 하나 생각했는데 우선순위 배열만 주어져서 실행된 작업이 location에 있던 작업인지 어떻게 확인할 지 고민되었다. location의 값을 조정하며, 큐에서 poll할 때 location이 0이었다면 구하고자 하는 값을 구할 수 있을거라고 생각했다. import java.util.*; class Solution { public int solution(int[] prio.. [1122] 자바 - 자료구조 (Queue) # Queue - Queue의 정의와 구조 ▪ 데이터를 처리하는 자료 구조 중 하나. ▪ 스택과 다르게 FIFO / LILO을 특징으로 가지고 있다. ▪ 데이터를 입력된 순서대로 처리할 때 사용한다. ▪ 두 개의 입출력 방향을 가지고 있으며, 데이터를 하나씩 넣고 뺀다. - Queue의 장점. 자료를 넣은 순서대로 꺼내서 처리할 수 있어서, 처리해야할 작업을 순서대로 처리할 때 유리. 다른 자료 구조에 비해 상대적으로 빠른 속도를 가지고 있다. (삽입과 삭제 각각의 방향. 원소를 삭제하는 연산 없음) 별도 라이브러리나 모듈 설치필요 X - Queue의 단점 중간에 데이터를 조회하거나 수정할 수 없음. (중간 데이터를 수정하기 위해서는 그 앞의 데이터를 모두 꺼내야함) 크기 제한이 없어 메모리의 낭비 발생.. [프로그래머스] 코테연습 - 숫자의 표현(lv.2) - 내 방법 풀이 자연수 n을 연속한 자연수로 표현하는 방법의 갯수를 표현 하는 방법을 구하는 문제. '연속'이 핵심 힌트 였다. 연속한 자연수를 만들기 위해 반복문을 사용하였다. 첫번째 숫자를 정하는 반복문 안에 더해줄 숫자를 정하는 이중 반복문을 작성했다. 연속한 자연수를 더해주다가 n과 같아지면 answer 증가 또는 초과되면 반복문을 종료하였다. 최근 풀은 문제들 중에 평이한 난이도의 문제였다. import java.util.*; class Solution { public int solution(int n) { int answer = 0; for (int i = 1; i [프로그래머스] 코테연습 - 체육복(lv.1) - 내 방법 풀이 체육복을 전부 가졌다고 가정한 N길이의 배열 선언 후, lost 배열과 reserve배열을 순회하며 해당하는 번호의 학생들의 배열값을 조정해주었다. 이후 앞에서부터 순회하며 체육복의 여유가 있는 사람이 앞 번호의 친구로부터 체육복을 빌리는 것을 가정하여 알고리즘을 구성했지만, 배열에서 뒷번호의 친구에게밖에 못 빌리는 다음 예시와 ( { 0, 1, 1, 0} ) 같은 배열의 상황을 고려하지 못 해, 테스트의 여러개에서 실패가 낫다. 이후 조건을 수정하여, 앞 뒤 사람에게 빌리도록 코드에 반영하여 번호의 숫자가 -1, 즉 체육복이 없는 사람을 n에서 빼주는 계산으로 통과했다. import java.util.*; class Solution { public int solution(int n, .. [프로그래머스] 코테연습 - 점프와 순간 이동(lv.2) - 내 방법 풀이 간단한 문제일거라 생각했다. 처음 짝수와 홀수를 나누어 풀 생각을 했고, 현재 위치를 m으로 설정하여 m이 n과 같아질 때까지 계산하는 방법으로 접근했다. 처음에 무조건 1을 점프하고, 그 뒤 m이 n과 같아질 때까지 while문을 돌려 같아지는 방법을 생각해봤지만 시도한 코드들이 맞지 않았고, 다시 수학적 접근을 해보려고 했다. n의 소수여부가 상관있는지 생각해봤지만 풀이에 큰 발전은 없었고, 계속 경우의 수인 코드를 생각해보았다. 끝없이 늘어나 결국 다른 사람의 답을 참고하게 되었다. - 다른 사람 방법 풀이 찾아본 모든 풀이는 n에서 낮아지는 방법을 사용했다. 현재 위치를 설정하여 계산하는 방법은 없었다. Top - down 방식의 풀이라고 하는데, 아직 접해본 적이 없었다. 내가.. [프로그래머스] 코테연습 - 폰켓몬(lv.1) - 내 방법 풀이 간단한 수학 문제였다. 설명이 길지만 요점은 박사님 연구실에 있는 폰켓몬 중 N / 2 마리를 데려갈 때 가장 많이 데려갈 수 있는 종류의 수를 구하면 되는 문제였다. HashMap에 키가 중복되지 않는 점을 이용해, 폰켓몬 번호를 key로 value를 넣었다. HashMap의 사이즈가 곧 폰켓몬의 종류 수이므로, 종류수보다 N / 2가 작다면 해쉬 사이즈 리턴. 종류수가 (N / 2)보다 크다면 N / 2 를 리턴하도록 했다. import java.util.*; class Solution { public int solution(int[] nums) { int answer = 0; // 종류를 검사하여 해쉬에 넣기. 키값은 중복 안되므로, 해쉬의 사이즈 == 폰켓몬 종류 갯수 // (폰.. [프로그래머스] 코테연습 - 문자열 내 맘대로 정렬하기(lv.1) - 내 방법 풀이 주어지는 문자열 배열을 int n번 인덱스 문자를 기준으로 정렬하는 문제 처음에 보고 n번 인덱스 문자를 꺼내서 char 배열을 만들어 풀려고 했지만, 정렬 후 문자열 매칭이 어려웠다. 다음 생각한 방법은 n번 인덱스 문자를 strings[i] 앞에 붙여 새로운 배열을 만들어 정렬한 후 맨 앞 문자를 뺀 나머지 문자열을 answer배열에 저장하여 리턴했다. import java.util.*; class Solution { public String[] solution(String[] strings, int n) { String[] answer = new String[strings.length]; String[] arr = new String[strings.length]; for (int .. 이전 1 2 3 4 5 6 ··· 8 다음 목록 더보기