본문 바로가기

반응형

programming

(98)
[안드로이드 프로그래밍 연습문제] Chapter 5 - 5번 (RelativeLayout) 1. 문제 안내, 예시 화면 오른쪽 화면을 XML 파일로 만드시오. 단 렐러티브레이아웃에 버튼을 사용하고 중앙에 있는 의 상대적인 위치로 다른 위젯을 배치한다. 기준 위젯의 크기는 가로세로 150dp이다. 2. 문제 풀이 이 문제는 RelativeLayout에 대해 알마나 깊은 이해력을 가지고 있는지를 시험하는 문제이다. 중요한 점은 center버튼 즉 기준 버튼만을 이용하는 것이 아닌, 레이아웃 자체의 배치 속성(layout_centerHorizontal)도 같이 섞어 사용해야한다는 점이다. 이 두가지를 이해하려면 여러 시도밖에 없는 것 같다. 다음은 코드이다. 실행결과는 예시화면가 똑같기에 올리지 않겠다.
[안드로이드 프로그래밍 연습문제] Chapter 5 - 4번 (weigth 속성) 1. 문제 안내, 예시 화면 위의 화면을 XML파일로 만드시오. 단, 리니어레이아웃만 사용하고 각 렝아웃의 색상을 다르게 설정한다. 이 카테고리는 학교 강의에서는 풀지 않은 연습문제들의 풀이를 올리는 과제이다. 물론 실습문제들만을 올릴것이다. 연습문제가 아닌 직접 풀어보기와 같은 문제들도 올릴예정이다. 많은 글을 올렸으면 좋겠다. 2. 문제풀이 이 문제는 간단하다. 글로 설명하자면 레이아웃안에 최대 세개의 LinearLayout이 중첩된다고 생각하면 된다. 여기서 조금 어려운 부분은 바로 오른쪽 상단 부분이다. 긴 막대기 형태로 세개의 레이아웃이 배열되어 있는데 처음 보면 막막할 것 같다는 생각이 들 수 있다. 다만 weight속성과 LinearLayout의 orientation속성을 알고있다면 잘 해결..
[안드로이드 프로그래밍 예제] 직접 풀어보기 5-2 1. 문제 안내, 예제 화면 리니어레이아웃으로 다음 화면을 구성하는 XML을 작성하라. 단, 레이아웃이 구분되어보이도록 서로 다른 색으로 지정한다. HTML을 따로 공부했을 때, 대학과정이 아니어서 그런것인지는 모르겠지만, 레이아웃을 그렇게 깊게 공부하지 않았다. 그래서인지 모바일 프로그래밍을 공부할 때 레이아웃 단원에 조금 집중하기 위해 예제를 풀어보았고 자연스럽게 글을 올리게 되었다. 2. 풀이 과정 어찌보면 이번 문제는 리니어레이아웃(LinearLayout)를 얼마나 잘 다룰 수 있는지 확인하는 문제라고 생각한다. 문제를 보면 LinearLayout을 여러번 중첩해서 구현할 수 있는 것을 알 수 있다. 최대 3번까지의 레이아웃을 중첩하여 사용하였고 다음은 코드이다. 이 문제에서 중요한 점은 weig..
Python을 활용한 '여름 길이' 분석하기 - (한 해의 여름은 몇일일까?) 1. 개요 바로 전 게시물에서는 Python을 활용해서 매년 평균 온도를 분석하였다. 이 프로젝트를 진행하면서 기온에 대한 궁금증이 생긴 후, 여름에 대한 궁금증이 시작되었다. 내가 내린 결론은(코드가 완벽하다면) '서울의 평균 기온은 점점 올라가고 있다.' 이고 이는 '서울의 여름은 길어지고 있을까?' 라는 질문으로 이어졌다. 온도가 증가했으니 여름은 당연히 길어지지! 라고 말할 수 있지만, 봄, 겨울 가을의 평균 기온이 증가해도 같은 결과가 나올 수 있다. 궁금증이 생겼고 나는 Python으로 그래프를 그릴 수 있으니, 바로 코드를 작성하기 시작했다. 2. 코드설계 코드를 작성할 때 가장 중요한 것 중 하나는 명확한 조건이다. 나에게는 여름의 길이를 구분할 수 있는 기준이 필요했다. 구글링을 해보니,..
Python을 활용한 서울 평균온도 분석하기 1. 개요 Python으로 데이터를 다루는 것은 작년 말(2019.12월)에 얇은 책 한권으로 학습한 기억이 있다. 당시 책에 있는 내용은 csv형태의 데이터를 Python으로 가공하는 형태의 내용이었는데, 개인적으로 흥미롭게 공부했다. 내가 배우는 언어로 무엇을 할 수 있을지를 경험하기 위해 공부한 분야이기 때문에 그렇게 깊은 학습을 하지는 못하였지만 궁금한 점을 해결할 수준, 미래에 데이터 분석이라는 분야를 만났을 때 구글링을 통해 기억해내고 학습을 이어갈 수 있는 수준을 유지하기 위해 노력했다. 어쩌다 발견한 지구온도상승에 대한 뉴스를 보고 그 뉴스의 댓글창에 열심히 토론을 하고있는 댓글들을 보며 직접 평균 온도를 계산하여 그래프로 확인하면 좋을 것 같다는 생각에 그래프를 그려보았다. 나는 통계를 ..
[알고리즘] C++ vector을 활용한 정렬 구현(버블, 삽입, 퀵) 1. 이론 알고리즘 중에 제일 대표적인 '정렬' 알고리즘이다. 알고리즘을 전부 공부한 것은 아니지만 아마 알고리즘을 공부할 때 가장 기초적으로 공부하는 알고리즘인 것 같다. (C언어를 공부할 때도 나왔으니......) 버블과 삽입은 어려운 알고리즘은 아니라고 생각했지만(이미 완성된 알고리즘을 구현하는 것 밖에 하지 않았지만......), 퀵의 구현을 공부할 때는 "대체 어떤 천재가 이런걸 만든거지?" 라는 생각이 들 정도로 감명받았다. 다음은 각각의 알고리즘의 이론이다. - 버블 버블알고리즘의 이름이 '버블'인 이유는 밑에서 부터 큰 숫자들이 마치 거품처럼 보글보글 올라오는 모습과 비슷하다고 하여 만들어진 이름이다. 최대값을 하나씩 가려내는 알고리즘이라고 생각하면 이해하기 쉬울 것이다. 다음과 같이 순서..
[백준 알고리즘] 1929번 - 소수 구하기 (시간 초과, 소수 알고리즘) 1. 문제, 실행결과 예시 백준 알고리즘 카테고리에 글을 쓰는게 정말 오랜만인 것처럼 느껴진다. 아마 실제로도 오랜만일 것이다 ㅎㅎ. 이 문제에 대한 풀이를 올리는 이유는 시간 초과라는 새로운 문제를 만났기 때문이다. 실제로 소수를 구하는 문제는 정말 많이 풀어봤지만, 이번 문제의 최대 입력값은 100000으로 기존에 사용하던 방법( 1 ~ N 까지의 모든 수를 비교하는 방법 )을 사용하면 시간초과가 날 수 밖에 없었다.( 심지어 숫자 하나당 줄바꿈을 해야하는 문제이다. ) 때문에 소수를 찾는 다른 방법을 사용해야 했다. 방법은 아래에서 자세히 설명할 것이다. 다음은 문제와 실행결과 예시 이다. 출처: https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의..
[C언어, C++] 재귀함수 내에서 재귀호출을 두번 할때 주의점 1. 문제 자료구조 tree공부하다가 입력된 정수를 가지고있는 data를 찾아주는 함수를 작성하고 싶었다. 그 함수는 값을 반환함과 동시에 tree를 전체적으로 탐색하는 역할을 수행해야한다. Tree를 직접 구성해보신 분들은 알겠지만, tree의 탐색은 재귀함수로 작성하는 것이 정말 간편하다. (나도 내입에서 재귀함수가 편하다고 할줄은 몰랐다......) 문제는 여기서 발생한 것이다. root → 왼쪽 트리 → 오른쪽 트리 순으로 탐색하는 전위탐색을 구현하였는데, 왼쪽 탐색을 진행하여 결과가 없을 때, return문이 중간에 끼어있으면 오른쪽 트리를 탐색하지 않고 재귀를 멈추는 오류가 발생하였다. 따라서 재귀호출 안에서 재귀호출을 두번할 때 발생하는 문제에 대해 알 수 있게 코드를 작성해보았다. 2. 해..