전체 글 160

[JAVA/백준] 2018번 : 수들의 합 5

[문제] 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다. 예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다. N을 입력받아 가지수를 출력하는 프로그램을 작성하시오. 첫 줄에 정수 N이 주어진다. 입력된 자연수 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 출력하시오 -입력 15 -출력 4 [풀이] import java.util.Scanner; public class P20..

alorithm/Baekjoon 2023.05.25

[JAVA/백준] 10986번 : 나머지 합

[문제] 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) 쌍의 개수를 구해야 한다. 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 106, 2 ≤ M ≤ 103) 둘째 줄에 N개의 수 A1, A2, ..., AN이 주어진다. (0 ≤ Ai ≤ 109) 첫째 줄에 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 출력한다. -입력 5 3 1 2 3 1 2 -출력 7 [풀이] package Baekjoon; import java.util.Scanner; public class P10986_나머지합 { pu..

alorithm/Baekjoon 2023.05.24

[JAVA/백준] 11660번 : 구간 합 구하기 5

[문제] N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다. 예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자. 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다. 표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오. 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수..

alorithm/Baekjoon 2023.05.24

[JAVA/백준] 11659번 : 구간 합 구하기4

[문제] 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. *제한 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N -입력 5 3 5 4 3 2 1 1 3 2 4 5 5 -출력 12 9 1 [풀이] package Baekjoon; import java.io.BufferedReader; import java.io.IOException; impor..

alorithm/Baekjoon 2023.05.24

[JAVA/백준] 1546번 : 평균

[문제] 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또..

alorithm/Baekjoon 2023.05.24

[JAVA/자료구조] 자바 연결리스트 사용법 (Linked List) 구현 / 예제 정리

▷ 연결 리스트 (Linked List)란? 연결 리스트(Linked List)는 연결 리스트, 링크드 리스트는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. 연결 리스트에서 수행되는 작업은 값 추가, 삭제, 검색 등이 있다. 자세한 구현 방법은 아래 글을 통해 소개하겠다. 먼저 연결리스트의 개념에 대해 정리한 글은 다음과 같다. 자료 구조의 기본인 배열과 연결 리스트의 장단점과 차이점 등을 정리한 글이다. (언어와는 상관 없이 기본 개념을 참고하기 좋은 글이니 참고하도록 하자.) [C언어/자료구조] 포인터 - 연결 리스트(Linked List) / 배열과 차이점 / 개념 정리 오늘은 C언어의 자료 표현 방식 중 '포인터와 연결 리스트(Linked ..

[C언어/자료구조] 포인터 - 연결 리스트 (Linked List) 개념 총 정리 / 배열과 차이점?

오늘은 C언어의 자료 표현 방식 중 '포인터와 연결 리스트(Linked List)' 에 대해 알아보고자 한다. 연결 리스트는 링크(link)를 이용해 표현한 리스트이다. 연결 리스트는 배열의 한계를 극복한 표현 방법 중 하나로 동적 할당이 가능한 것이 특징이다. 그 구조를 더 이해하기 쉽게 데이터 구조를 먼저 살펴보자. 1. 포인터의 개념 데이터가 담긴 주솟값을 저장하는 변수 다른 어떤 변수의 주소를 그의 값으로 저장한다. C 언어에서는 모든 변수가 주소를 가지고 있기 때문에, 모든 변수에 대해서 포인터 유형이 존재한다. 2. 포인터의 특성 1) 초기화 - 포인터를 선언만 하고, 초기화하지 않으면 값은 미정(undefined), 포인터 변수에 주소를 지정해야 한다. - 주소 연산자 ‘&’를 해당하는 변수..

[JAVA/백준] 11399번 : ATM

[문제] 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게 ..

alorithm/Baekjoon 2023.05.21

[C언어/자료구조] 배열 - 2차원 배열, 3차원 배열, 구조체, 순차 리스트

오늘은 C언어의 자료 표현 방식 중 반드시 기본으로 알아야 할 '배열' 에 대해 알아보고자 한다. 1. 배열의 개념 배열은 종류가 같은 여러개의 데이터를 순차적으로 나열한 것이다. 정수(int), 문자(char), 부동소수(double) 뿐 아니라 구조화 타입의 배열도 허용한다. 2. 배열의 특성 인덱스 범위(index range)가 존재하며 이 범위를 넘게 되면 에러가 발생한다. 배열의 크기는 선언 시 명세하며, 이 크기는 불변하다. (크기 = 길이) 배열의 lower bound는 항상 0이다. upper bound는 최소 lower bound의 +1 이다. 배열의 선언과 초기화가 동시에 가능하다. 예) int a[100]={0} //배열 a를 선언과 동시에 0으로 초기화 3. 배열의 선언 대괄호([ ..

[Github] 깃헙 다른 계정으로 이사가기 / 레포지토리 새로운 저장소로 옮기는 방법

기존에 파서 쓰던 깃헙의 레포지토리를 옮길 일이 생겼다. 학교의 졸업생인지라 계정이 언제 사라질 지 모르는 불안함 때문에 새로운 계정을 파기로 함. 깃헙은 이럴 때를 대비해 레포지토리를 손 쉽게 옮기는 기능을 제공한다. import repository 라는 기능이다. 방법은 아주 간단하다. 1. 깃헙 레포지토리에 들어가 URL을 복사한다. 내가 이사 가게 된 새로운 계정. 아무 것도 없고 텅텅 빈 새로운 프로필.. 앞으로 잘 부탁해... 2. 새로운 계정, 저장소에 들어가 Repositories-New 누르고 상단의 Import a repository 클릭! 그럼 아래와 같은 화면이 뜬다. 3. 아까 복사한 의 레파지토리 URL을 붙여넣기 해주고, 레파지토리 네임을 정해 넣어준다음 Begin import..

DevOps/Git 2023.05.21