본문 바로가기

전체 글239

산술 오버플로 산술 오버플로 란? 컴퓨터는 수학자들이 만든 기계들이며 수학에 따라 움직입니다만, 현실 세계에 존재하는 물건인지라 엄연한 제한이 있습니다. 그 중 가장 대표적인 제한이 바로 유한성입니다. 수학에는 어떤 변수 n이 있다고 하면 이 변수에 담을 수 있는 숫자에는 제한이 없습니다. 그러나 컴퓨터의 모든 변수에는 담을 수 있는 크기가 제한되어 있습니다. 따라서, 수학적/논리적으로는 완전히 정당한 알고리즘도 프로그램으로 구현했을 때, 예상과 다르게 동작하는 경우를 흔하게 볼수 있습니다. 이 문제를 일으키는 흔한 원인이 바로 산술 오버플로 (Arithmetic overflow) 입니다. 어떤 식의 계산 값이 반환되는 자료형의 표현 가능한 범위를 벗어나는 경우를 말합니다. 현대 많은 언어들에서는 메모리가 허락하는 한.. 2022. 3. 20.
[안드로이드 에러] AAPT: error: duplicate attribute. Error 문제 발생 현재 블럭 되어있는 부분을 지우면, 정상 작동 하였습니다. 해당 .xml 파일에서 저 부분이 layout에도 동일한 코드가 존재해서 그렇습니다. xml 파일에서 DataBinding 처리할 때, 이러한 오류를 잘 만나게 됩니다. Layout 태그를 설정하고, View 속성을 제거하지 않아서 발생합니다. AAPT 란? 안드로이드 빌드 툴의 일부로, 안드로이드 SDK 안에 포함되어 있습니다. 빌드 과정에서는 안드로이드 앱의 소스를 제외한 나머지 파일을 정리하여 APK 로 패키징하는데 쓰입니다. 하지만, 패키징은 IDE가 대신하므로, 보통 개발자들은 APK 에서 정보를 꺼낼 때 씁니다. 설명 오류가 있다면 꼭 피드백 주세요 : ) 2022. 3. 19.
[백준 *Java] - 에디터 (1406) 에디터 백준 1406 ⬇ [접근방식] 접근방법 1. 명령어가 수행되기 전 커서는 문장 맨 뒤에 위치하고 있다. => 초기화할 때, N+1 2. 초기에 편집기에 입력되어 있는 문자열이 주어짐 그 문자열에 삽입이 들어감 => List 자료구조 사용하기 3. Scanner / BufferedReader 중 어떤 걸로 입력으로 사용할까? => 최대 입력 값은 60만 글자임. 따라서 Scanner(1KB) 에 비해 더 큰 버퍼(8KB)를 사용하니, 긴 문자열에 포함된 파일을 읽을 시 효과적, 따라서 BufferedReader 로 먼저 사용. 4. 담을 공간에 대해서 생각해보기 (String, StringBuffer/StringBuilder) => 단일 쓰레드에 문자열 연산이 많을 수 있고, 특정 위치에 값을 삽입.. 2022. 3. 18.
[백준 *Java] - 2*n 타일링 (11726) 이번 문제는 2*n 타일링 백준 문제입니다. 역시나 DP 문제에 익숙하지 않아 문제를 이해하는데 오래걸렸습니다. 역시 DP 문제는 문제와 테스트케이스를 꼼꼼히 읽으며 하나씩 그려보거나? 쓰면서 하는 게 이해가 잘되는 거 같습니다. DP 에 대해서 잘 모르신다면? 아래 링크를 타고가서 블로그 글을 읽고 오시면 좋을 거 같습니다 😊 다이나믹 프로그래밍 점화식 👆 위 그림과 같이 그려보면, 갯수가 피보나치 수열로 증가하는 게 보입니다. 피보나치 수열은 1, 1, 2, 3, 5, 8 이런 식으로 증가합니다. 그런데 지금 보이는 수는 1 2 3 5 8 로 증가를 하니 인덱스를 맞춰서 코드를 구현하면 됩니다. 아래 코드는 주석을 달아 코드 설명을 해놓았습니다. 👇 Top-down 방식으로 구현하였고, 주석에는 Bo.. 2022. 3. 18.
[백준 *Java] - 1로만들기(1463) DP 문제를 처음 접했을 때 풀었던 문제입니다. 일단 DP에 대해서 잘 모르신다면, 아래 링크를 타고 가서 한 번 읽고 오셔도 좋을 거 같습니다. 다이나믹 프로그래밍 점화식 1로 만들기 문제는 Top-down, Bottom-up, dfs 방식으로 각기 다르게 문제를 풀어보았습니다. 아래코드 기준으로 메모리,시간 효율이 좋은 순서는 dfs > Bottom-up > Top-down 입니다. 하지만 dfs 와 Bottom-up은 큰 차이는 보이지 않았습니다. 각 코드마다 주석으로 코드 설명을 해놓았습니다. 혹시 코드개선할 점과, 모르는 부분이 있으시면 댓글 남겨주시면 감사합니다 : ) DP 문제는 종이와 펜을 가지고 일일이 확인을 해보면서 점화식을 찾으며 문제를 풀고 그 능력을 키우면 실력에 도움이 많이 될거.. 2022. 3. 18.
[백준 *Java] - 스택(9012) / 단어뒤집기(9093) / 괄호(10828) 스택 백준 10828 ⬇ [접근방식] Stack API 를 사용하기보단, 직접 구현을 해서 문제를 풀었습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; // 스택 10828문제 public class Boj_10828 { private int max; private int ptr; private int [] stk; public Boj_10828(int capacity) { ptr = 0; max = capacity; stk = new int[max]; } public void push (int input) { stk[p.. 2022. 3. 16.