본문 바로가기

Algorithm6

[BOJ-1300] K번째 수 N이 최대 10^5 이므로 아래와같이 구해서는 TLE나 메모리 초과가 난다. import java.util.Arrays; import java.util.Scanner; public class Sol1300 { //N이 100000이므로 TLE나 메모리 초과남 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); //배열의 크기 int K = sc.nextInt(); //k번째 int[][] A = new int[N+1][N+1]; int[] B = new int[(N*N)+1]; int m = 0; for(int i = 1; i 2019. 8. 20.
숫자에서 n번째 자리 숫자 추출 숫자 n이 있을때 k번째 자리수의 숫자를 추출(k는 1의 자리,10의 자리,100의 자리 등...에따라 1,2,3 ...식으로 증가) (n / 10^(k-1))%10 즉 추출하고자하는 자리수의 수자를 1의 자리에 오도록 10^(k-1)로 나눈후 추출을 위해 10으로 %연산(나눈 나머지) 연산을 한다. 이때 연산된 숫자는 int형에 넣으면 소숫점 이하를 버릴수 있으므로 응용하면 소숫점 몇번째 자리수도 구할 수 있다. 2015. 4. 13.
문자열 입력받아 포함된 알파벳 갯수 확인 String을 입력받아 사용된 알파벳수 출력 Tip. 정수(int) 숫자를 문자(char)로 바꾸려면 타입캐스팅을 하면됨. ex> (char)숫자 알파벳 대문자 A~Z : (char)65~90 (26개) 알파벳 소문자 a~z : (char)97~122 (26개) 위와 같이 알파벳 대문자와 소문자 사이에는 6개(char)92~96의 특수문자가 있음. 91:[ 92:\ 93:] 94:^ 95:_ 96:` 따라서 for문을 돌려서 알파벳 각 문자를 비교하기위해 대문자26자 + 소문자 26자 = 52자 기준으로 돌리되 중간에 특수문자 6개를 띄어넘어 비교하게 끔 아래와 같은 로직을 이용하면 됨 for(int i=0; i System.out.println((char)(0+65)); 는 A System.out.pr.. 2015. 4. 11.
n*n배열을 숫자로 대각선으로 위아래 이동하며 채우기 NumberDiagonalShape.java /** * NumberDiagonalShape * n*n배열을 숫자로 대각선으로 위아래 이동하며 채우기 * * 1 3 4 10 11 * 2 5 9 12 19 * 6 8 13 18 20 * 7 14 17 21 24 * 15 16 22 23 25 * **/ int [][] map; //숫자를 채울 배열 int n = 5; //배열길이 int cnt = 1; //채울 숫자 //생성자 public NumberDiagonalShape(){ map = new int[n][n]; } //숫자 채우기 public void numberFill(int a, int b){ int r = a; //row int c = b; //col if(a == n-1 && b == n-1){ .. 2015. 4. 9.