[Java][백준] 1032번 명령 프롬프트
·
✏ Study/Problem Solving
🔗 문제 링크https://www.acmicpc.net/problem/1032 💡시니어 해설더보기[문자열 다루기]🔍 접근 방법문자열 패를 활용하는 문제[핵심 포인트]• 모든 파일 이름의 같은 위치에 있는 문자 비교• 모두 같으면 해당 문자 유지, 다르면 '?'로 치환• 첫 파일 이름을 기준으로 비교접근[방법]1. 첫 번째 파일 이름을 기준으로 설정2. 각 문자 위치별로 N개의 파일을 비교3. 동일하면 그대로, 다르면 '?'를 결과에 추가[주의 사항]• 파일 이름이 하나일 경우 예외 처리로 바로 출력• 모든 파일 이름의 길이가 같다는 조건 활용 💻 풀이 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IO..
[Chapter 04] CPU의 작동 원리
·
✍🏻 TIL/혼자 공부하는 컴퓨터 구조+운영체제
CPU가 메모리에 접근하는 속도는 레지스터에 접근하느 속도보다 훨씬 느림-> ALU 결과값을 메모리가 아닌 레지스터에 우선 저장 -> 플래그 레지스터에 저장됨- 부호 플래그- 제로 플래그 : 연산 결과가 0인지- 캐리 플래그 : 연산 과정에서 올림수나 빌림수 발생 여부- 오버플로우 플래그- 인터럽트 플래그 : 인터럽크 가능 여부- 슈퍼바이저 플래그 : 커널 모드인지 사용자 모드인지 제어장치: 제어 신호를 내보내고, 명령어를 해석하는 부품 / 클럭, 수행할 명령어, 플래그, 제어신호를 받아들임제어 신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호- 프로그램 카운터(PC; Program Counter) (= 명령어 포인터) -> 변위 주소 지정 방식 : 메모리에서 읽어 올 명령어의 주소..
[Chapter 03] 명령어
·
✍🏻 TIL/혼자 공부하는 컴퓨터 구조+운영체제
low-level programming language: 명령어로 이루어져 있음 / 기계어, 어셈블리어- 기계어(machine code): 0과 1로 이루어진 명령어 모음- 어셈블리어: 기계어를 읽기 편한 형태로 번역한 언어컴파일 언어: 컴파일(컴파일 언어로 작성된 소스 코드 전체가 저급 언어로 변환되는 과정) 방식으로 작동하는 프로그래밍 언어- 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어- 대표적으로 C- 컴파일러가 소스 코드 내에서 오류를 하나라도 발견하면, 해당 소스 코드는 컴파일에 실패- 목적 코드(object code): 컴파일러를 통해 저급 언어로 변환된 코드 인터프리터 언어: 인터프리트 방식으로 작동하는 프로그래밍 언어- 인터프리터에 의해 소스 코드가 한 줄씩 ..
[Chapter 02] 데이터
·
✍🏻 TIL/혼자 공부하는 컴퓨터 구조+운영체제
비트(bit): 0과 1을 표현할 수 있는 가장 작은 정보 단위바이트(byte) = 8bit kB -> MB -> GB -> TB : (이전 단위) x (1,000)KiB -> MiB -> GiB -> TiB : (이전 단위) x (1,024) 워드(word): CPU가 한 번에 처리할 수 있는 데이터 크기이진수 표기: [주로 수학적] 아래첨자 (2) , [주로 코드상] 숫자 앞에 0b십육진수 표기: [주로 수학적] 아래첨자 (16) , [주로 코드상] 숫자 앞에 0x 2의 보수(two's complement): 어떤 수를 그보다 큰 2^n에서 뺀 값- 가장 널리 사용되는 음수 표현 방식이지만, 완벽한 방식은 아님.- 0이나 2^n 형태의 이진수에 2의 보수를 취하면 원하는 음수값을 얻을 수 없음. 1의..
[Chapter 01] 컴퓨터 구조 시작하기
·
✍🏻 TIL/혼자 공부하는 컴퓨터 구조+운영체제
컴퓨터가 이해하는 정보 = 명령어 + 데이터[컴퓨터의 네 가지 핵심 부품] -> 메인보드에서 연결됨, 시스템 버스(주소 버스, 데이터 버스, 제어 버스)를 통해서 정보를 주고 받음 1. 중앙처리장치(CPU; Central Processing Unit) : 메모리에 저장된 명령어를 읽고, 해석하고, 실행- 산술논리연산장치(ALU; Arithmetic Logic Unit), 레지스터(register), 제어장치(CU; Control Unit)- 레지스터: CPU 내부의 작은 임시 저장 장치- 제어장치: 제어 신호(control signal)라는 전기 신호를 내보내고, 명령어를 해석하는 장치 2. 주기억장치(main memory, 이하 메모리) - RAM(Random Access Memory), ROM(Rea..
[프로그래머스][코딩테스트 연습][Java] 문자열을 정수로 바꾸기 / length(), charAt(), Character.getNumericValue(), Integer.parseInt()
·
💻 Code Kata/Algorithm
📖 문제 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. ⛔ 제한 조건s의 길이는 1 이상 5 이하입니다.s의 맨 앞에는 부호(+, -)가 올 수 있습니다.s는 부호와 숫자로만 이루어져 있습니다.s는 "0"으로 시작하지 않습니다.💻 입출력 예 예를 들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.  • String의 특성String은 char의 배열이므로, 배열처럼 사용해도 될 것이라고 생각했습니다.하지만 String은 다양한 메서드로 문자열을 조작하고 접근할 수 있도록 설계된 객체입니다.직접 배열 인덱스를 사용할 수 없고, char..
[계산기 만들기] SOLID 원칙
·
✏ Study/Java
💻 계산기 만들기 Step 1. 사칙 연산 수행하는 Calculator 클래스 생성더하기, 빼기, 나누기, 곱하기 연산을 수행할 수 있는 Calculator 클래스를 만듭니다.Calulator 클래스는 연산을 수행하는 반환 타입이 double인 calculate 메서드를 가지고 있습니다.calculate 메서드는 String 타입의 operator 매개변수를 통해 연산자 매개값을 받습니다.int 타입의 firstNumber, secondNumber 매개변수를 통해 피연산자 값을 받습니다.calculate 메서드는 전달받은 피연산자, 연산자를 사용하여 연산을 수행합니다. 힌트) if or switch 즉, 제어문을 통해 연산자의 타입을 확인하고 해당하는 타입의 연산을 수행하고 결과값을 반환합니다. swi..
[객체 지향 프로그래밍 및 설계의 5가지 기본 원칙] - SOILD 원칙
·
✏ Study/Java
[객체 지향 프로그래밍 및 설계의 5가지 기본 원칙] - SOILD 원칙SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)코드 확장 및 유지 보수가 더 쉬워지며, 불필요한 복잡성을 제거해 리팩토링에 소요되는 시간을 감소시킴으로써 프로젝트 개발의 생산성을 높일 수 있습니다.1. 단일 책임 원칙 (Single Responsiblity Principle)  • 하나의 클래스(객체)는 단 하나의 책임만 가져야 한다는 원칙입니다. 여기 '책임'은 '기능'을 의미합니다.  •  이는 클래스(객체)가 변경되는 이유는 한 가지여야 한다는 것와 같습니다.  •  즉, 하나의 클래스(객체)는 하나의 기능을 담당하여 하나의 책임을 수행..
[프로그래머스][코딩테스트 연습][Java] 약수의 합 / 약수 구하기
·
💻 Code Kata/Algorithm
📖 문제자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.⛔ 제한 조건n은 0 이상 3000 이하인 정수입니다.💻 입출력 예nreturn122856 입출력 예 설명 입출력 예 #112의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.  입출력 예 #25의 약수는 1, 5입니다. 이를 모두 더하면 6입니다. 🔎 약수: 어떤 수를 나누어 떨어지게 하는 수 즉, 정수 $ n $에 대한 약수 $ d $에 대한 조건은 아래 코드처럼 표현할 수 있습니다.n % d == 0  약수에 대해 알고 나니,'그러면 이 조건을 몇 번 실행해야 하는가?' 에 대한 고민을 하게 됩니다.  가장 단순하게 모든 경우를 실행해 봅니다. [방법..
[프로그래머스][코딩테스트 연습][Java] 평균 구하기 / length, length(), size() 의 차이점
·
💻 Code Kata/Algorithm
📖 문제정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.⛔ 제한 조건arr은 길이 1 이상, 100 이하인 배열입니다.arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.💻 입출력 예arrreturn[1, 2, 3, 4]2.5[5, 5]5  for each문을 이용하여 배열의 원소를 모두 더한 후, 원소릐 갯수만큼 나눠주는 코드를 구현하고자 했습니다.public class codeKata { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; double answer = 0; int arrSum = 0; if (i..