YD_S 개발로그
article thumbnail
백준 2292번 - 벌집
알고리즘 2023. 6. 23. 20:37

문제 접근방법 1 번째. 1 2 번째. 2~7 (1+6) 3 번째. 8~19 (7+12) 4 번째. 20~37 (19+18) 5 번째. 38~61 (37+24) 육각형이 점점 확대되는 것이므로 이전 갯수보다 6*(N-1) 만큼 증가되는 것을 확인할 수 있다. 그러므로 (누적된 값 + 6*(N-1))의 공식을 갖는다. 그렇기에 입력받은 값이 해당 범위 최대값 이내라면 N번째를 찾을 수 있다. 정답 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net

article thumbnail
백준 2745번 - 진법 변환
알고리즘 2023. 6. 23. 15:53

문제 접근방법 수 N을 CharArray로 받은 후 배열의 순서를 역으로 돌린다. 10진법 이상을 경우 CharArray의 원소가 ASCII 코드 값 65('A') 이상일 경우 원소 값을 ASCII 코드로 변환 후 55를 빼준다. pow함수를 이용해 N제곱을 하여 각 계산된 값을 더해준다. ASCII 코드 표 정답 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net

article thumbnail
백준 2563번 - 색종이
알고리즘 2023. 6. 23. 15:14

문제 접근방법 가로, 세로 크기가 각각 100이므로 2차원 배열 [100][100] 을 0으로 초기화 해준다. 주어진 좌표를 기준으로 행의 값을 [x][y] , [x][y+1], [x][y+2] .... [x][y+10] 을 1로 지정하고, 열의 값을 [x][y][x+1][y][x+2][y]....[x+10][y]의 값 또한 1로 지정한다. 그럴 경우 겹치는 사각형의 부분도 1로 지정되어 있으므로 배열의 값을 전부 조회하여 1의 갯수를 세면 넓이의 값을 구할 수 있다. 정답

article thumbnail
백준 1316번 - 그룹 단어 체커
알고리즘 2023. 6. 22. 18:43

문제 접근방법 입력된 문자열를 charArray로 받아 각 문자 별 중복되는 인덱스를 List에 넣어준다. 중복된 단어의 위치(List의 원소)와 해당 위치의 이전 위치(List의 원소 -1)이 다른 경우 중복되는 문자가 떨어져 나타난 것을 의미하므로 그룹 단어가 아님을 판별하고 전부 같을 경우 연속으로 나타나는 문자라 판별한다. 또한 중복된 인덱스가 없는 경우(List의 크기가 0일 때) 서로 다른 문자만이 나타난 것을 의미하므로 그룹 단어라 판별할 수 있다. 정답 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z,..

article thumbnail
백준 15552번 - 빠른 A+B
알고리즘 2023. 6. 20. 15:58

문제 접근방법 Java : Scanner.next(), System.out.println() Kotlin : readLine(), println() (java의 함수도 사용할 수 있다.) 위 언어 별로 각각의 입출력(I/O) 함수가 제공된다. 사용법은 간단하지만 해당 함수는 느린 입출력(Slow I/O)에 해당한다. 그렇기에 BufferedReader와 BufferedWrite를 사용하면 빠른 입출력(Fast I/O)을 할 수 있어 속도면에서 유리하다. Scanner는 왜 느릴까? Scanner의 버퍼는 1 KB를 갖고 있어 버퍼 사이즈가 작기 때문에 빈번히 버퍼를 비워줘야하는 반면 BufferedReader는 8 KB의 버퍼를 갖고 있어 버퍼에 담을 수 있는 입력값이 많습니다. 입력을 받을 때 정규식을..

article thumbnail
백준 11382번 - 꼬마 정민
알고리즘 2023. 6. 19. 13:49

문제 접근방법 해당 문제는 데이터 범위에 대한 이해도를 바탕으로한다. 입력받는 값을 int 자료형으로 받을 경우 int형의 범위보다 큰 수의 경우 Overflow가 발생한다. 그러므로 더 큰 정수형의 범위를 받는 long long 자료형을 사용해야한다. kotlin의 경우 long 자료형이 64bit인 long long 으로 설정되어 있으므로 long 자료형을 사용하면 된다. 유형 이름 바이트 값의 범위 sort 2 Byte -32,768 ~ 32,767 unsigned sort 4 Byte 0 ~ 65,535 int 4 Byte -2,147,483,648 ~ 2,147,483,647 unsigned int 4 Byte 0 ~ 4,294,967,295 long 4 Byte -2,147,483,648 ~..

article thumbnail
백준 1008번 - A/B의 결과는?
알고리즘 2023. 6. 19. 11:39

문제 접근 방법 해당 문제는 부동소수점 개념애 대해 알고있어야한다. 실수를 표현하는 자료형은 유한한 범위를 가지지만 1/3의 경우 0.3333333333333.... 의 무한소수를 갖는다. Float : 4 Byte(32bit) Double : 8 Byte(64bit) 그렇기에 변수에 실수를 저장 하는 것은 어느정도 정보의 손실이 발생할 수 밖에 없다. (실수 변수는 정확한 값을 가지고 있지 않다.) Float는 10-7 정도의 오차 범위를 가지고 Double은 10-15 정도의 오차범위를 갖는다. 결과적으로 출력이 double 자료형의 소수값으로 출력되어야한다. 정답 Reference https://www.acmicpc.net/blog/view/37 https://www.acmicpc.net/probl..