분류 전체보기 183

자바 메소드(method) - 공부하는 도비

프로그램을 작성하다 보면 특정 연산을 중복해서 여러 번 사용할 때도 있습니다. 예를 들어, '+, -, *, /' 연산을 해주는 코드가 3번 필요하다면, 아래 코드처럼 비 효율적인 방법으로 실행해야 합니다. 위의 코드를 보면, (a, b), (c, d), (e, f) 각각의 변수가 모두 동일한 연산을 하고 있다는 걸 알 수 있습니다. 이 처럼 반복되는 코드를 줄이고자 메소드라는 개념이 나오게 되었습니다. * 메소드란, 간단히 코드 재사용과 유지 보수를 쉽게 하기 위한 도구입니다. : 메소드를 정의할 땐, 매개변수(인자)의 유무, 반환 값의 유무 에 따라서 크게 4가지로 표현이 됩니다. 1) 매개변수(인자) X, 반환 값 X : 기본 형태인 메소드를 정의해보았습니다. 반환 값이 없을 때는 void라는 단어..

JAVA 2022.03.03

자바 for(for-each)반복문 사용 - 공부하는 도비

자바의 반복문엔 for, while이 있습니다. 오늘은 for를 중점적으로 살펴보겠습니다. for문에는 for와 for-each 라는 게 있습니다. 1. for : for(변수 선언&초기화 ; 반복 조건 ; 변수 변화 연산) 으로 구성이 됩니다. - for 문으로 배열 생성 후, 출력하기 : 길이가 5인 int 배열을 선언한 뒤, 배열의 길이 만큼 for문을 돌려서 각 배열에 순차적으로 값을 넣고, 출력하고 있는 예제입니다. 2. for-each : for-each는 기본 for문을 조금 더 편리함을 줄 수 없을까? 하는 생각으로 나오게 된 유형입니다. 예제를 배열로 들어보겠습니다. 9번째 줄을 보면, for (String (임의의)변수명 : 배열 명)을 확인하실 수 있습니다. e는 배열 명에 해당하는 ..

JAVA 2022.03.03

enumerate 내장 함수로 for문 돌리 - 공부하는 도비

많은 프로그램 언어가 특정 변수(ex. i, j, k)를 증가시켜가면서 반복문을 수행합니다. 하지만, 파이썬에서는 enumerate()라는 내장 함수로 이러한 변수 없이 독특한 방식으로 반복문을 돌릴 수 있습니다. for __ in __: 가장 기본적인 for문은 for in : 형태로 작성이 됩니다. 예를 들어, 3개의 숫자를 담고 있는 리스트를 for 문으로 출력해보는 코드를 작성해보겠습니다. 해당 리스트의 인덱스도 함께 출력하고 싶을 땐 어떻게 해야할까요?. 제일 간단한 방법은 새로운 변수를 하나 두고 변수의 값을 증가시키며 출력하는 것입니다. 아마 C언어나 다른 언어를 하다가 파이썬을 하시면, 제일 먼저 떠올리는 방법 중 하나일 것 같습니다. 하지만, 프로그램이 종료되어도 변수(index)라는 값..

Python/Python Basic 2021.12.06

for 문을 사용하여 list 값 remove 할 때 주의 할 점 - 공부하는 도비

리스트에 있는 값을 for문으로 하나하나 삭제해보려고 했지만, 계속 리스트 범위를 벗어났다는 등의 오류가 났습니다. 다음 코드를 보며, 어떤 오류가 있는지 살펴보겠습니다. test = list(range(0, 10)) # test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print("original test : ", test) for i in test: test.remove(i) print(test) 해당 코드를 실행시키면, 위와 같은 결과가 나옵니다. 문제의 원인은, 첫 번째 루프 때는 test의 0번째 원소를 지우므로 리스트는 [1, 2, 3, 4, 5, 6, 7, 8, 9]가 됩니다. 두 번째 for문을 돌 때는, test의 1번째 원소(test = [1, 2, 3, 4, 5, 6..

Python/Python Basic 2021.11.08

소수, 소수 판정 - 공부하는 도비

암호학에서 소수는 상당히 많이 사용된다. 앞으로 소수와 관련된 내용을 정리하며, 암호에 대한 중요한 개념을 다뤄보려고 한다. * 소수 : 하나의 양정수가 오직 1이나 자신으로만 나누어 떨어진다는 말과 동일하다. → 소수와 관련된 몇가지 사실 1) 가장 작은 소수는 2이다. - Proof) 2는 1과 2로만 나누어 떨어지기 때문이다. 2) 1은 소수가 아니다. - Proof) 소수는 서로 다른 두 개의 정수로만 나누어 떨어져야 하고, 그 이상이나 그 이하의 정수로 나누어져서는 안된다. 1은 오직 자신에 의해서만 나누어지기 때문에 1은 소수가 아니다. 3) 소수는 무한하다. - 소수가 무한하다는 증명은 몇 가지가 있는데, 가장 유명한 유클리드의 증명을 살펴보기로 한다. 우선, 소수가 유한하다고 가정한다. *..

Computer Security 2021.11.02

백준 1934번 문제 풀이 - 공부 하는 도비

https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 최소 공배수를 구하는 문제입니다. 제가 예전에 유클리드 호제법에 관한 내용을 포스팅한 적이 있습니다. gcd(greatest common divisor) 즉, 최대 공약수를 구하는 방법은 아래 링크를 확인해주세요. 2021.05.21 - [파이썬/프로젝트] - [파이썬] 유클리드 알고리즘(Euclidean Algorithm) - 공부하는 도비 [파이썬] 유클리드 알고리즘(Euc..

Python/Baekjoon 2021.11.01

백준 11653번 문제 풀이 - 공부하는 도비

https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 이 문제는 입력 받은 수를 소인수분해 하는 문제이고, 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력해야 한다. 소인수분해를 못하는 사람은 없을 꺼라고 생각하고, 코드를 바로 보면 우선, 큰 while문 안에 또 다른 while문을 넣었다. 첫번째 while 조건은 입력 받은 수가 1이 될 때까지 반복문을 돌리는 것이고, 두번째 while 조건은 나누는 수(d)가 입력받은 수(a)를 나누었을 때, 나머지가 0이 되도록 d를 1씩 증가시키면서, a를 나누었을 때 나머지가 0이 될 때 까지 반복문을 돌리는 것이다. ..

Python/Baekjoon 2021.10.24

백준 5355번 문제 풀이 - 공부하는 도비

https://www.acmicpc.net/problem/5355 5355번: 화성 수학 겨울 방학에 달에 다녀온 상근이는 여름 방학 때는 화성에 갔다 올 예정이다. (3996번) 화성에서는 지구와는 조금 다른 연산자 @, %, #을 사용한다. @는 3을 곱하고, %는 5를 더하며, #는 7을 빼는 연산 www.acmicpc.net 해당 문제는 특정 문자가 들어오면, 그에 맞춰 정해진 연산을 해주는 문제입니다. - @ => 3 곱하기 - % => 5 더하기 - # => 7 빼기 예제 입력 처럼, 몇개의 문자가 들어올지 모르기 때문에 미리 변수를 선언해서 값을 입력 받는 형태는 사용할 수 없을 꺼라고 생각했다. ( ex) a, b, c = map(int, sys.stdin.readline().split()..

Python/Baekjoon 2021.10.24

백준 1032번 문제 풀이 - 공부하는 도비

https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 처음 이 문제를 봤을 때, 입력받은 정수 만큼 문자열을 저장한 후, 각 자리마다 모두 비교할 생각이었다. 하지만, 제일 처음 입력 받은 문자열과 그 다음 입력 받은 문자열을 비교 한 후, 예제 출력 처럼 미리 바꿔두면, 한번에 모든 문자열을 각 자리마다 비교하는 수고가 사라진다. 코드는 간단하다. 1. a 에 입력한 문자열을 리스트 형으로 바꾸어 저장한다. 2. 입력받은 정수(count)-1..

Python/Baekjoon 2021.10.22

백준 2839번 문제 풀이 - 공부하는 도비

문제를 크게 두 가지로 나눠야해요. 첫 번째는 3과 5의 적당한 곱으로 입력된 값을 만들어 내지 못할 때, -1 을 출력해야하고, 아닌 경우는 총 몇개의 봉지가 필요한지 계산해야 합니다. 이 문제를 푸는 방법은 1. 우선 5로 나눠떨어지면 그 몫을 출력해주면 되고, 2. 아닌 경우는 입력 된 값에 -3을 해주면서 봉지 +1 을 해주면 됩니다.(여기서 +1을 해주는 건, 3kg 봉지가 추가 된다는 뜻입니다.) 3. 위의 과정을 입력된 값이 0 이 될 때까지 진행해줍니다. 만약 입력된 값이 0이 되면, 반복문을 멈춰주면 되겠죠? 코드를 보면 쉽게 이해하실 수 있습니다.!

Python/Baekjoon 2021.08.20