SWEA - 8016. 홀수 피라미드 (JAVA) :: 매운코딩
728x90
300x250

* Pass코드는 맨 밑에 있습니다.

 

1차 실패코드

아래는 제한시간 초과로 10개중 4개 테케만 맞은 케이스이다.

진짜 피라미드 형태로 구성을 해버려서 그런듯하다..

import java.util.Scanner;
import java.io.FileInputStream;

/*
   사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
   이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
 */
class Solution
{
	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt();
		for(int tc=0;tc<T;tc++) {
			//System.out.println("**************");
			int N = sc.nextInt();
			int num = 1;
			int start=0,end=0;
			for(int i=0;i<N;i++) {
				
				for(int j=i;j<N-1;j++) {
					//System.out.print("  ");
				}
				for(int j=0;j<(i*2)+1;j++){
					if(j==0)
						start=num;
					if(j==(i*2))
						end=num;
					//System.out.print(num+" ");
					num+=2;
					
				}
			}
			System.out.println("#"+(tc+1)+" "+start+" "+end);
		}
	}
}

 

2차실패 코드

(테케for문 제외)이중for문에서 단일for문으로 바꿨는데도,, 제한시간 초과가 나오는군..뭘까

import java.util.Scanner;
import java.io.FileInputStream;

/*
   사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
   이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
 */
class Solution
{
	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt();
		for(int tc=0;tc<T;tc++) {
			int N = sc.nextInt();
			int num = -1;
			int start=1,end=1;
			int cnt=N*N; //해당 층의 끝 자릿수
			
			for(int i=0;i<cnt;i++) {
				num+=2;
				//System.out.print(num+" ");
				if(i==(cnt-(N*2)+1))
					start=num; 
			}
			end= num;
			//System.out.println();
			System.out.println("#"+(tc+1)+" "+start+" "+end);
			}
	}
}

3차 실패코드

for문을 아예 없앴는데도 왜 안되는거야?!?!??!?!?!?!왜에에에에에

이번엔 제한시간초과는 아니고 오답이라고 나온다.

1/234/56789/10...../.../.../

층수의 가장 왼쪽은 (n-1)^2 , 가장 오른쪽은 n^2이다. 이걸 홀수로 대입해서 계산식을 만들었다. 근데 왜 안돼...?

import java.util.Scanner;
import java.io.FileInputStream;

/*
   사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
   이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
 */
class Solution
{
	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt();
		for(int tc=0;tc<T;tc++) {
			int N = sc.nextInt();
			int start=0,end=0;
			start=(N-1)*(N-1)+(N-1)*(N-1)+1; //(N-1)^2 + 1 +(N-1)^2
			end=(N*N)+(N*N)-1;				 //N^2 + N^2 -1
			
			System.out.println("#"+(tc+1)+" "+start+" "+end);
			}
	}
}

 

 

드디어 PASS 했다...,,

왜틀렸냐면,,,, 10의 9승이면 int 범위를 벗어나기 때문에 long타입으로 해줬어야 했던 것..ㅠ

아직 갈길이 멀구나

import java.util.Scanner;
import java.io.FileInputStream;

/*
   사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
   이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
 */
class Solution
{
	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt();
		for(int tc=0;tc<T;tc++) {
			long N = sc.nextInt();
			long start=0,end=0;
			start=(N-1)*(N-1)+(N-1)*(N-1)+1; //(N-1)^2 + 1 +(N-1)^2
			end=(N*N)+(N*N)-1;				 //N^2 + N^2 -1
			
			System.out.println("#"+(tc+1)+" "+start+" "+end);
			}
	}
}
728x90

+ Recent posts