본문 바로가기

기타

(32)
백준) 1475-방 번호 (파이썬) https://www.acmicpc.net/problem/1475 (실버 5 문제, 30분 걸림) 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 생각 처음 15분 정도 동안은 9의 갯수와 6의 갯수를 전부 세고 비교하여 계산하는 방식으로 구현하려고 했다. 하지만 조금 더 생각해본 결과, 9가 나온 경우, 9를 6으로 바꿔도 된다는 사실을 알게 되었다. 9를 6으로 바꾸고 난 후 어떤 문제가 생길지 생각을 해보니 홀수 번 등장했냐, 짝수 번 등장했냐에 따라 계산식을 달리 결정해야한다는 것을 알았다. 내 코드 # s를 문자의 형태로 입력받는다. 리스트에 추가하기 위한 A 반복문 적용을 위해 문자로 받는다. s..
이코테) 게임 개발-실전 문제 문제 캐릭터의 움직임은 다음과 같이 움직인다. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향(반시계 방향으로 90도 회전한 방향)부터 차례대로 갈 곳을 정한다. 캐릭터의 바로 왼쪽 방향에 아직 가보지 않은 칸이 존재한다면, 왼쪽 방향으로 회전한 다음 왼쪽으로 한 칸을 전진한다. 왼쪽 방향에 가보지 않은 칸이 없다면, 왼쪽 방향으로 회전만 수행하고 1단계로 돌아간다. 만약 네 방향 모두 이미 가본 칸이거나 바다로 되어 있는 칸인 경우에는, 바라보는 방향을 유지한 채로 한 칸 뒤로 가고 1단계로 돌아간다. 단, 이때 뒤쪽 방향이 바다인 칸이라 뒤로 갈 수 없는 경우에는 움직임을 멈춘다. 메뉴얼에 따라 캐릭터를 이동 시킨 뒤에 캐릭터가 방문한 칸의 수를 출력하는 프로그램을 만들어라. 입력 조건: 첫째 줄에 맵..
Getter, Setter를 지양하는 이유 객체 지향 프로그래밍에서는 객체의 데이터를 외부에서 직접적으로 접근하는 것을 막는다. 객체 데이터를 외부에서 변경하는 경우 객체의 무결성이 깨질 수 있기 때문이다. Getter, Setter를 이용해서 객체 데이터를 수정하는 경우가 많은데, 사용시 편리하게 객체의 데이터를 수정 가능하다. 하지만 Getter와 Setter의 경우 함부로 사용하지 않는 편이 좋다는 말도 많고, 실제로 그러한 포스팅도 많다. 그렇다면 왜 사용하지 말라고 하는 것일까? ▶ Getter, Setter 사용 여부의 문제 이전에 Getter, Setter이 무엇인지 확실하게 알 필요가 있다. Getter, Setter은 private를 관리하는 메서드이다. private 선언시 다른 클래스에서 접근하려면 해당 클래스 안의 메서드를 ..
Java Collection Framework ▶ Collection Framework 자바의 Collection은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조이다. Java Collections Framework는 객체를 한 곳에 모아 관리하고, 편하게 사용하기 위해 제공되는 환경이다. 데이터, 자료구조인 컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다. ▶ Collection 사용 이유 다수의 데이터를 다루는데 표준화된 클래스를 제공해준다. 그렇기에 자료구조를 직접 구현하지 않아도 된다. 또한 배열과 다르게 객체를 보관하기 위한 공간을 미리 설정하지 않아도 되서, 상황에 따라 객체의 수를 동적으로 정할 수 있다. 즉 요소의 개수에 따라 크기가 자동 조절되므로 프로그램의 공간적인 효율성을 높일 수 있다. 그 밖에 요소의 삽입..
백준) 1463 - 1로 만들기 (Python) https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 생각 DP 문제의 기본이라고 부를 수 있는 문제이다. DP를 사용하지 않고 문제를 해결할 수도 있으나 DP를 제대로 배우고 써보고자 활용해서 문제를 해결하려 했다. 문제의 입력에 대한 출력 값을 보면서 왜 그러한 값들이 나왔는지 머릿속으로 계속해서 과정을 그려봤다. 내 코드 n=int(input()) d=[0]*(n+1) d[0]=0 d[1]=1 d[2]=1 d[3]=1 for i in range(4,n+1): if i%3==0: d[i]=min(d[i//3]+1,d[i-1]+1) elif i%2==0: d[i..
백준) 1244 - 파이썬 https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 생각 과정을 분할해서 생각해봤다. 총 4가지 과정을 거쳐야한다. 1. 스위치의 개수, 스위치의 상태, 학생의 수, 학생 성별과 학생이 받은 스위치 수 구현 2. 학생의 성별이 남자일 경우 받은 스위치 번호의 배수들을 전부 뒤바꾼다 3. 학생의 성별이 여자일 경우 받은 스위치 양 옆 번호들을 계속 비교해서 두 개가 같은 경우 뒤바꾸고 아닌 경우 스탑한다. 4. 20개 단위로 끊어서 출력 이 4..
백준) 10431 - 파이썬 https://www.acmicpc.net/problem/10431 (실버 5) 10431번: 줄세우기 초등학교 선생님 강산이는 아이들을 데리고 단체로 어떤 일을 할 때 불편함이 없도록 새로 반에 배정받은 아이들에게 키 순서대로 번호를 부여한다. 번호를 부여할 땐 키가 가장 작은 아이가 1 www.acmicpc.net 입력 4 1 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 2 919 918 917 916 915 914 913 912 911 910 909 908 907 906 905 904 903 902 901 900 3 901 902 903 904 905 906 907 908 909 910 911 912 ..
백준) 11723 - 파이썬 https://www.acmicpc.net/problem/11723 (실버 5) 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 입력 26 add 1 add 2 check 1 check 2 check 3 remove 2 check 1 check 2 toggle 3 check 1 check 2 check 3 check 4 all check 10 check 20 toggle 10 remove 20 check 10 check 20 empty check 1 toggle 1 check 1 toggle 1 check 1 출력 1 1 0 1 0 1 0 1 0..