본문 바로가기

BOJ32

[BOJ] 2588. 곱셈 (Python3) 문제 링크 / level: Bronze IV https://www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 👍이 문제에서 새로 익힌 기술: Extended Slices 15 Extended Slices 15 Extended Slices Ever since Python 1.4, the slicing syntax has supported an optional third ``step'' or ``stride'' argument. For example, these are all legal Python syntax: L[1:10:2], L[:-1:1], L[::-1]. T.. 2020. 9. 1.
[BOJ] 1000. A+B (Python3) 문제 링크 / level: Bronze V https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net Python은 학부 때 논문 쓰면서 데이터 분석용으로만 썼었는데, 코테용으로 준비를 시작해보기로 했다. 아주 간단한 입출력 문제이지만 나에게는 Python으로 푼 첫 알고리즘 문제니까 기념으로 글을 적어본다. 얼른 Python 문법에 익숙해져서 빠르게 알고리즘 구현 단계까지 넘어가야겠다. Python에서 입력받는 두 가지 방법: 1. 공백으로 구분될 때 -> input().split()의 형태로 받는다. 2. 줄바꿈으로 구분될 때 -> input()의 형태로 받는다. 진짜 .. 2020. 9. 1.
[BOJ] 2740. 행렬 곱셈 (Java) 문제 링크 / level: Bronze I https://www.acmicpc.net/problem/2740 2740번: 행렬 곱셈 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개 www.acmicpc.net 내가 생각한 풀이 고등학교, 대학교 때 많이 계산했던 행렬의 곱셈 연산에 관한 문제였다. 그런데 간단한 규칙에 비해 코드로 구현하는데 생각보다 어려움이 좀 있었다.🤔💦 일단 행렬의 곱셈을 위한 조건을 알아보자. 첫 번째 행렬(first)의 크기: N * M 두 번째 행렬(second)의 크기: M * K 1. 이 중 M의 값이 반드시 같.. 2020. 5. 28.
[BOJ] 10093. 숫자 (Java) 문제 링크 / level: Bronze II https://www.acmicpc.net/problem/10093 10093번: 숫자 문제 두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오. 입력 두 정수 A와 B가 주어진다. (1 ≤ A, B ≤ 1015, A와 B의 차이는 최대 100,000) 출력 첫째 줄에 � www.acmicpc.net 내가 생각한 풀이 간밤에 짝꿍이랑 연습 겸 대결을 하면서 풀어본 문제. 난이도도 브론즈인데다가 문제가 너무 심플해서 5분컷 할 줄 알고 건드렸다가 런타임 에러에... 틀렸습니다에.. 아주 난리를 친 문제였다. 자세히 보면 정답 비율이 약 24%밖에 되지 않는 오묘한 문제다. 문제의 핵심은 1. 입력값의 범위를 잘 살펴야한다.. 2020. 5. 24.
[BOJ] 1110. 더하기 사이클 (Java) 문제 링크 / level: Bronze I https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 내가 생각한 풀이 간단한 문제인데 자릿수 이야기가 있어서 문자열로 할까 숫자로 할까 고민하다가 브론즈 문제라서 그냥 간단하게 숫자로 풀었다. 자릿수는 나눗셈과 모듈러 연산으로 처리해줌. 몇 가지 포인트는, 1. 연산하려는 숫자가 한 자릿수일 때와 두 자릿수일 때로 나눠서 처리하는 것 2. 덧셈 연산 한 번 할 때마다 카운트(cnt)도 하나씩.. 2020. 5. 23.
[BOJ] 14681. 사분면 고르기 (Java) 문제 링크 / level: Bronze IV https://www.acmicpc.net/problem/14681 14681번: 사분면 고르기 문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌 www.acmicpc.net 내가 생각한 풀이 x좌표와 y좌표를 입력받은 뒤 두 좌표의 값을 곱한다. 곱해서 양수가 나온다면 (+,+) 또는 (-,-) 조합이니까 x좌표의 값만 검사해서 양수면 1사분면, 음수면 3사분면으로 처리. 곱해서 음수가 나온다면 (-,+) 또는 (+,-) 조합이니까 이번에도 x좌표의 값만 검사해서 음수면 2사분면, 양수면 4사분면으로 .. 2020. 5. 23.
[BOJ] 1205. 등수 구하기 (Java) 문제 링크 / level: Silver IV https://www.acmicpc.net/problem/1205 1205번: 등수 구하기 첫째 줄에 N, 송유진의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000�� www.acmicpc.net 내가 생각한 풀이 기분전환 좀 할 겸 대학생 기본반 문제집에 있는 것 중에 어렵지 않은걸로 하나 골라서 풀어봤다. 오늘은 거두절미하고 바로 시작! 이 문제가 만약 입력받을 때 들어오는 점수가 내림차순이 아니라 무작위였다면 조금 더 귀찮았을 것이고, 새로 삽입해야 하는 점수가 송유진의 새로운 점수 1개만이 아니라 여러 개였.. 2020. 5. 22.
[JAVA 에러] StringTokenizer와 nextToken() 사용 중 발생한 NoSuchElementException 평화롭게 BOJ 사이트에서 문제를 풀고 있었다. 그러던 중 인접리스트의 원소들을 채우는 과정에서 부득이하게 V2 = Integer.parseInt(st.nextToken()); 라는 코드를 두 번 작성했다. 위에서 한 번 받은 후에 그걸 사용하고, 밑에서 다시 받아서 for문이 다시 시작되면 바로 사용하려고 했던건데 오류가 났다. 그리고 그 오류의 내용은 NoSuchElementException였다. (직역하면 그런 원소 없다?!🤔) 구글링을 해본 결과 하나의 값에 대해서 next가 두 번 나오게 되면 발생하는 오류라는 정보를 얻었다. 나는 StringTokenizer로 입력받은 문자열을 토큰으로 자르고, nextToken()를 이용해서 V2 = Integer.parseInt(st.nextToken()).. 2020. 5. 15.
[JAVA 문법] 입력: BufferedReader와 Scanner의 속도 차이😲 https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 며칠 전 백준 알고리즘 사이트를 들어갔다가 예전에 틀린 채로 남아있는 브론즈 문제가 있길래 풀었다. 문제는 매우 간단한 최소, 최대 관련 문제였는데 순간 호기심이 생겨서 입력을 한 번은 Scanner로, 또 한 번은 BufferedReader로 받아서 속도 차이를 확인해보았다. (나는 평소에 BufferedReader를 쓰는데, 이게 더 빠르다고는 했지만 얼마나.. 2020. 5. 9.