전체 글

전체 글

    [JAVA] 문자 리스트를 문자열로 변환하기

    문자열 배열을 편하게 이어붙이기위해서 사용할 수 있는것은 경우에 따라 다르다. foreach문 활용(java1.5 부터 사용가능) class Solution { public String solution(String[] arr) { String answer = ""; for(String word : arr){ answer += word; } return answer; } } String.join() 메소드 활용(java8 부터 사용가능) class Solution { public String solution(String[] arr) { return String.join("", arr); } } String.join()은 여러 개의 String을 이어붙여서 하나의 String으로 만들어주는 메소드이다. 활용..

    [CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터

    T1 ) 레지스터란? CPU 내부의 작은 임시 저장 장치이다. 프로그램 속 명령어와 데이터는 실행 전·후로 레지스터에 저장된다. CPU 내부에는 다양한 레지스터들이 있고, 각기 다른 역할을 가진다. T2) 레지스터의 종류 ( CPU마다 종류가 다름 ) 프로그램 카운터(Instruction Pointerl; 명령어 포인터) 메모리에서 가져올 명령어의 주소( 메모리에서 읽어들일 명령어의 주소 ) 명령어 레지스터 해석할 명령어( 방금 메모리에서 읽어들인 명령어 ) → 제어장치가 해석함 메모리 주소 레지스터 메모리의 주소( CPU가 읽어들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터 ) 메모리 버퍼 레지스터 메모리와 주고 받을 값( 데이터와 명령어 ) → CPU가 데이터 버스로 정보를 주고 받을 때 ..

    [CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치

    T1) ALU T1_Sub1) ALU는 무엇을 받아들이는가? 계산을 수행하는 장치이기 때문에 계산을 하기 위한 피연산자와 수행할 연산이 필요하다. 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들인다. 연산 수행 후 결과값을 레지스터에 담는다. (메모리 접근 속도보다는 레지스터 접근속도가 빠르기때문) 결과값( 주소, 숫자, 문자 등등 다양하다. )은 ALU가 내보내는 정보 중 하나이다. 플래그 : 연산 결과에 대한 부가 정보(음수, 양수, 0인지 아닌지 등등) 연산 결과가( 결과를 담을 레지스터에 비해 ) 너무 크다 ! 라는 정보도 담긴다.(overflow) T2) 제어장치 T2_Sub1) 제어장치가 받아들이는 정보 1) 클럭 클럭이란 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있..

    [JAVA] 문자열 자르기(substring() 활용)

    substring() substring()은 시작지점과 종료지점을 지정하여 문자열의 특정부분을 잘라내거나 이어붙이는것으로 활용할 수 있다. 활용형태 substring( int startIndex ) : 지정한 index부터 문자열 끝까지 잘라서 반환한다. substring( int startIndex , int endIndex ) : 지정한 시작index부터 종료index까지 잘라서 반환한다. 활용예시 class Solution { public String solution(String my_string, String overwrite_string, int s) { String answer = ""; String a = my_string.substring(0,s); String b = my_string.s..

    [JAVA] 문자열을 하나씩 나누기(toCharArray(), charAt() 활용)

    방법 1) toCharArray() 활용 import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = sc.next(); for (char ch : a.toCharArray()) System.out.println(ch); } } toCharArray()는 char타입의 배열을 생성하여 문자열을 한글자씩 나누어서 생성된 char타입 배일에 집어넣어 반환해주는 메소드이다. 배열을 생성한 후에 처리되기 때문에 처리속도가 느리다. (물론 사용자가 체감할 정도는 아닌듯..?) 공백또한 문자로 인식을 하기때문에 사용 시 그점은 주..

    [CS : 컴퓨터 구조] C 언어의 컴파일 과정

    1) 전처리기(preprocessor) ( test.c → test.i ) 전처리(preprocess)과정을 실행 전처리 과정 (preprocessing) 본격적으로 컴파일하기 전에 처리할 작업들 외부에 선언된 다양한 소스코드, 라이브러리 포함(e.g. #include) 프로그래밍의 편의를 위해 작성된 매크로 변환(e.g. #define) 컴파일할 영역 명시(e.g. #if, #ifdef, ···) 2) 컴파일러(compiler) ( test.i → test.s ) 컴파일(compile)과정을 실행 컴파일 과정(compiling) 전처리가 완료 되어도 여전히 소스코드이다. 전처리 완료된 소스코드를 저급 언어(어셈블리 언어)로 변환 3) 어셈블러(asembler) ( test.s → test.o ) 어셈블..

    [CS : 컴퓨터 구조] 03-2 명령어의 구조

    T) 명령어의 구조 T1) 명령어란? ' 무엇을 대상으로 무엇을 수행하라'라는 것 ex) "철수야 미역국 좀 끓여라" 더해라 100과 120을 뺴라 메모리 32번지 안의 값과 메모리 33번지 안의 값을 저장해라 10을 메모리 128번지에 수행할 연산 연산에 사용될 데이터 혹은 주소필드( 연산에 사용될 데이터가 저장된 위치 ) T2) 명령어의 구성 저장해라 10을 메모리 128번지에 A) 연산코드 B) 오퍼랜드 B) 오퍼랜드 오퍼랜드에는 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치(주소필드)가 들어있다. 경우에 따라 없는 경우 여러개가 들어있는 경우가 있을 수 있다. A) 연산코드 (연산코드의 종류와 생김새는 CPU마다 다르다) 종류 : ① 데이터전송 ② 산술 / 논리 연산 ③ 제어 흐름..

    [CS : 컴퓨터 구조] 명령어 : 03-1 소스코드와 명령어

    고급언어 : 개발자가 이해하기 쉽게 만든 언어 저급언어 : 컴퓨터가 이해하고 실행하는 언어 저급언어 기계어 · 0과 1로 이루어진 명령어로 구성된 저급언어 · 16진수로 표현된 기계어 어셈블리어 · 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급언어 ※ 개발자가 작성한 코드를 컴퓨터가 바로 읽거나 쓰기를 할 수 없는 것은 고급언어이기 때문이다. 그렇기때문에 저급언어로 변환해주어야한다. (고급언어) 컴파일 언어와 인터프리트 언어 A) 컴파일 언어 컴파일 언어로 작성된 소스코드는 컴파일러에 의해 저급언어로 변환되고(변환하는 과정을 컴파일이라고한다.) 컴파일 결과로 저급언어인 목적코드가 생성된다. 소스 코드 컴파일 중 오류가 발생하면 소스 코드 전체가 실행되지 않는다. B) 인터프리터 언어 인터프리..