전체 글 (118) 썸네일형 리스트형 컴퓨터 구조 : CPU 작동 원리 📗 CPU의 동작 과정 1. 메모리는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다. 2. CPU는 프로그램을 실행하기 위해 메모리에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 메모리에 저장한다. 3. 메모리는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다. 4. 제어장치는 1-3 과정이 명령어의 순서대로 실행하도록 각 장치를 제어한다. CPU가 실행할 명령어의 집합을 '명령어 세트'라고 한다. 명령어 세트 연산코드와 피연산자로 이루어진다. 연산코드 : 실행할 연산, 연산, 제어, 데이터 전달, 입출력 기능을 가짐 피연산자 : 필요한 데이터나 저장 위치, 주소, 문자/숫자, 논리 데이터를 저장 CPU는 프로그램을 실행하기 위해 메모리에서 명령어를 .. 컴퓨터 구조 : 컴퓨터의 구성 📗 컴퓨터의 구성 컴퓨터 시스템은 크게 하드웨어, 소프트웨어 2가지로 나뉜다. 하드웨어 : 컴퓨터의 시스템을 구성하는 기계적 장치를 말한다. 소프트웨어 : 하드웨어의 동작을 지시하고 제어하는 명령어의 집합을 말한다. 📗 하드웨어란? 하드웨어는 크게 3가지로 나뉘는데 중앙 처리 장치, 기억 장치, 입출력 장치가 있다. 중앙 처리 장치는 우리가 잘 아는 컴퓨터의 핵심인 CPU를 말하고 기억장치는 RAM, HDD 를 말하며 입 출력 장치는 마우스, 프린터, 키보드, 모니터 등등 컴퓨터에게 명령을 하고 명령의 대한 결과를 볼 수 있는 장치이다. 📗 소프트웨어란? 소프트웨어는 크게 2가지로 시스템 소프트웨어와 응용 소프트웨어로 나뉜다. 시스템 소프트웨어 : 응용 프로그램과 하드웨어 장치 사이에 존재하는 소프트웨어.. [JAVA] List.remove(Int) VS remove(Integer) 코딩테스트 문제를 풀면서 몰랐던 사실을 알게되어 기록하기 위해 글을 쓴다. 🕶️ 알게된 것 지금까지 List 의 remove 메서드의 파라미터로 항상 '인덱스'를 넘겨줘야 하는 것으로 알았다. 실제로 remove 메서드의 설명에서 Parameters 를 보면 'index' , 삭제를 하기 위한 원소의 인덱스를 파라미터로 넘겨달라고 적혀있다. 따라서 remove 메서드에 int형 데이터를 전달하면 List 내에 있는 원소들의 인덱스 중, 파라미터로 전달된 데이터 값의 인덱스를 찾아 삭제한다. 하지만 remove 메서드에 int형 데이터가 아닌 Integer형 데이터를 전달하면 결과가 전혀 달라짐을 확인할 수 있다. 🚨 CODE public class Main { public static void main(.. [JAVA] 프로그래머스 - 피로도 프로그래머스 고득점 알고리즘kit 완전탐색 lv.2 문제인 피로도 문제다. 각 던전에 입장할 수 있는 최소한의 피로도와 던전을 탐험했을 때 소모되는 피로도를 고려하여 최대한 많은 던전을 탐험하고 그때의 던전 수를 구하면 된다. ✅ 핵심 풀이 모든 경우의 수에 대해서 던전을 탐험하고 탐험이 완료된 뒤 탐험 횟수의 최대 값을 갱신해 주면 된다. 따라서 완전탐색을 이용하여 풀었고 탐험했던 던전을 중복하여 탐험하지 않기 위해 boolean 타입의 visit 배열을 사용했다. 하지만 간과한게 하나 있었으니, 처음에 현재 피로도가 최소 필요 피로도보다 작은 경우 해당 던전을 방문처리하고 continue로 넘어가도록 코드를 짰는데 테스트 케이스는 통과했으나 다른 테스트 케이스에서 실패가 뜨고 말았다. 최소 필요 피로.. [JAVA] length, length(), size() 의 차이 코딩테스트 문제를 풀면서 한 가지 의문이 들었다. JAVA에서 길이를 구하는 대표적인 메서드로는 length, length(), size()로 3가지가 있는데 전부 길이를 구하는 메서드임에도 불구하고 사용처에 따라 다른 메서드를 사용해야한다. 이에 혼동되지 않게 정리하고자 글을 쓴다. 1. length length 메서드는 배열의 길이를 알고자 할 때 사용한다. ex) int[] array = new int[5]; array.length => 5 이외에도 double, String 배열에서도 사용 가능하다. 2. length() length() 메서드는 문자열의 길이를 알고자 할 때 사용한다. 여기서 말하는 문자열은 단순 String 이외에 StringBulider 도 포함된다. ex) String st.. [JAVA] 프로그래머스 - 다리를 지나는 트럭 프로그래머스 고득점 kit 스택/큐 문제인 다리를 지나는 트럭 문제다. 백준에서 풀어봤던 적이 있던 문제라 어렵지 않게 풀 수 있었다. 다만 처음 접하는 경우 까다로운 조건이 몇 개 있어서 좀 어려울 수도 있다. ✅ 핵심 풀이 먼저 다리의 길이만큼 큐에 0을 넣었다. 트럭 한 개가 다리 길이 1만큼을 차지 하므로 트럭이 올라가지 않은 다리는 0으로 두는 것이다. q.poll() == 0 인 경우 지나간 트럭은 없고 q.poll() q.add() 해줄 때 마다 큐에 존재하는 트럭이 왼쪽으로 이동하므로 이 방법을 사용 하면 전체 다리 길이와 트럭이 다리를 건너는 시점을 따로 신경쓰지 않아도 된다. 그리고 truck_weights의 마지막 인덱스 값이 큐에 넣어진 경우 해당 트럭이 나갈때까지 q.poll() .. [JAVA] 프로그래머스 - 베스트 앨범 프로그래머스 고득점 알고리즘 kit의 마지막 문제인 베스트 앨범이다. ✅ 핵심 풀이 문제에 나온 1번째 조건인 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 을 만족하기 위해 장르 별 노래 재생 횟수를 count 하고 저장하기 위해 Map 을 사용하고 Map 내 value (재생 횟수) 를 기준으로 key(장르) 를 내림차순 정렬한다. 장르의 정렬 결과를 List에 저장하고 정렬된 장르(rankedGenre)를 기준으로 genres 배열을 순회하여 rankedGenre == genres[i] 인 경우 해당 노래의 genre와 재생 횟수인 play, 그리고 해당 노래가 배열의 몇 번째 원소였는지에 대한 idx를 Album 객체의 리스트인 list에 저장해주었다. 이후 문제의 2번째 조건 장르 내에서 많.. [JAVA] 백준 - 14620 꽃길 (feat. JAVA 얕은 복사, 깊은 복사) 🕶️ 문제 풀기 앞서 알고 넘어가면 좋은 것 모든 경우의 수를 알아야하는 완전 탐색 문제이다. 본인은 완전탐색 같은 문제를 풀 때, 문제마다 다르지만 보통 재귀함수를 사용하는 편이다. A라는 경우에서 -> B 경우를 고려하고 -> C 경우 일 때의 최소 or 최대 같은 경우에 해당되는데 앞선 단계에서 ~~는 이미 고려했다! 라는 정보를 메모라이징 하기 위해 boolean형식의 visit를 사용해 true, false 처리를 해주고, 재귀를 하는 메서드의 파라미터로 넘겨주곤 하는데 이번 문제에서는 재귀 호출하는 B(=A)라는 메서드에서 return 후 상위 스택의 동일한 메서드 A로 갔을 때 visit의 상태가 바뀌지 않아서 의도한 결과 값이 나오지 않아 애를 먹었다. 명확하게는 visit의 상태가 재귀 .. 이전 1 ··· 9 10 11 12 13 14 15 다음