전체 글

백준 오답노트/기본 수학1

백준 - 기본 수학1 2292번 벌집 / 구글로 해결

문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 예제 입력 1 복사 13 예제 출력 1 복사 3 이 문제에 대한 접근 자체를 하지 못했다. 처음에 규칙을 찾으려고 엄청 노력했었는데 규칙..

백준 오답노트/정렬

백준 - 정렬 18870번 좌표 압축 / 문제 이해 못함 + 설명

문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 제한 1 ≤ N ≤ 1,000,000 -109 ≤ Xi ≤ 109 예제 입력 1 복사 5 2 4 -10 4 -9 예제 출력 1 복사 2 3 0 3 1 예제 입력 2 복사 6 1000 999 1000 ..

백준 오답노트/문자열

백준 - 문자열 10809 리팩토링, 시야 넓히기

= 문제 = = 처음 내가 해결한 방법 = = 리팩토링 = = 접근 = 이렇게 간단한 방법으로 해결할 수 있다고는 전혀 생각하지 못했다. 브론즈5 문제였음에도 불구하고 내가 맨 처음 시도한 방법으로 해결하는데 한 시간 정도 시도했다 다른 사람들의 코드를 보는게 왜 중요한지 깨달았다. 시야가 확실히 넓어진다. 26개의 배열값을 -1로 초기화하고 알파벳의 아스키코드를 이용해서 내가 원하는 인덱스에 원하는 값을 넣는다는 생각을 다른 사람의 풀이 과정을 보지 않았다면 평생 몰랐을 것 같다. 좋은 방법들을 새로 배워가면서 더 성장하자.

백준 오답노트/정렬

백준 - 정렬 10814번 문제 틀린 이유 + 해결 완료

= 문제 = = 처음 접근 내용 = 그 전에 문제에서는 2차원 배열을 이용해서 접근했었는데, 이번에는 List를 이용해서 더 편하게 정렬하고 내가 더 편하게 뽑아내자 ! 라는 생각으로 접근했다. 어차피 앞에 숫자만 길이가 같고 그거 파싱해서 내가 원하는 값을 그대로 뽑아내면 되잖아? 라고 이런 식으로 접근을 했었는데, 런타임 오류가 발생했다. 왜 그러지 계속 생각하고 생각해도 이유를 못 찾았는데... 하루가 지나서 드디어 해결! = 틀린 이유 = 나이가 2자리만 받을 수 있는 환경이면 subString을 이용해서 나이 비교를 할 수 있지만, 1~200까지 입력이 가능하기 때문에 List에 저장해서 subString을 활용할 수가 없다. 그래서 이전 문제와 같은 방식으로 2차원 배열을 이용해서 해결했다. ..

백준 오답노트/반복문

백준 - 반복문 1110번 문제 효율적으로 접근하는 방법

= 문제 = = 내가 해결 한 방법 = 이 문제가 분명 어려운 문제가 아닌데 약 2시간 정도 씨름한 것 같다.. 내 풀이는 노가다에 가깝고 시간만 있으면 누구나 충분히 할 수 있는 수준의 코드고 다른 사람들은 어떻게 해결했는지 궁금해서 검색을 해봤는데 넘 허무했다... 출처 : https://st-lab.tistory.com/42 [백준] 1110번 : 더하기 사이클 - JAVA [자바] https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자 st-lab.tistory.com 이렇게 간단하게 해결할 수 있는 문제였다...

백준 오답노트/반복문

백준 - 반복문 15552번 문제 틀린 이유 + 해결 시간의 중요성

= 문제 = 입력 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. 출력 각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다. 예제 입력 1 5 1 1 12 34 5 500 40 60 1000 1000 예제 출력 1 2 46 505 100 2000 = 처음 작성한 코드 = import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(..

초보병일이
초보 성장기