TIL. 알고리즘 Day01

hyuko·2022년 11월 16일
0

알고리즘

목록 보기
1/1

배열과 리스트

배열이란?

배열은 메모리의 연속공간에 값이 채워져 있는 형태의 자료구조이다.
선언한 자료형의 값만 저장할 수 있다.

배열의 특징

  • 인덱스를 사용하여 값에 바로 접근 가능하다.
  • 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기가 어렵다.
    삽입이나, 삭제를 하려면 해당 인덱스 주변에 있는 값을 이동 시켜야 한다.
  • 배열의 크기는 선언할 때 지정할 수 있으며, 한번 선언하면 크기를
    늘리거나 줄일 수 없다.
  • 구조가 간단하므로 코딩 테스트에서 많이 사용된다.

리스트란?

리스트는 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조이다.
※ 노드: 컴퓨터 과학에서 값, 포인터를 쌍으로 갖는 기초단위

리스트의 특징

  • 인덱스가 없으므로 값에 접근하려면 Head 포인터부터 순서대로 접근
  • 값에 접근하는 속도가 느리다.
  • 포인터로 연결되어 있으므로 데이터를 삽입하거나 삭제하는 연산 속도는 빠르다.
  • 선언할 때 크기를 별도로 지정하지 않아도 된다.
  • 리스트의 크기는 정해져 있지 않고 크기가 변하기 쉬운 데이터를 다룰 때 적절하다.
  • 포인터를 저장할 공간이 필요하므로 배열보다 구조가 복잡하다.

간단한 리스트와 배열관련 문제를 알아본다.

백준 11720문제 숫자의 합 구하기


여기서 첫째 줄의 입력되는 값은
더 해야 할 숫자의 갯수를 나타내는 것이고
두번째 줄에 나오는 숫자는 연속된 붙여진 숫자가 나오게된다.

여기서 그 붙여진 숫자를 하나하나 더한 값을 구해야하는 것이다

이 문제는 String은 char의 배열 형태라는 것을 알아야 풀 수있다.

그렇기 때문에 String sNum 이라는 변수를 통해
2번째줄을 String형으로 저장을 하고

이 String 변수를 char[] 배열을 통해
다시 각각 넣으면서 더하면 되는 문제이다.

코드로 알아보겠습니다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        String sNum = br.readLine();
        char[] cNum = sNum.toCharArray();
        int sum = 0;
        for (int i = 0; i < cNum.length; i++){
            sum += cNum[i] - '0';
        }
        System.out.println(sum);
    }
}

N이라는 몇개를 더할 지 넣는 변수 값을 지정해주고
sNum에 다음 줄에 올 숫자들을 문자열로 넣어줍니다.

cNum이라는 문자형 배열을 만들어 그 크기는
sNum의 길이만큼 만들어 준후
sum이라는 마지막 결과값 int형의 변수를 0으로 초기화해주고
for문을 돌리면서 sum에 넣으면서 더해준 후
for문 밖에서 print해주면 되는 문제입니다.

profile
백엔드 개발자 준비중

0개의 댓글